如何用一條語句同時刪除2張表的資料

2022-11-29 05:40:11 字數 4711 閱讀 4723

1樓:晗_寒

這肯定是錯的了...

對於實現你的問題我想到了幾個

1.可以利用表中的約束,也就是外來鍵。在建立外來鍵時建立一個資料操作同步。

例子:constraint fk_tbl1_tbl2 table1(列名) references table2(列名) on update cascade on delete cascade

其中on update cascade是在你對伊個表的相關列進行更新時,2個表同時都會更新。

而delete,則是刪除,和更新同理。

2.可以利用觸發器

用delete觸發器

具體的寫法希望white_win大哥能說說,呵呵,我還沒學到3.也就是你寫2條語句吧...呵呵

2樓:來自匡山膚如凝脂的墨蘭

delete from table1,table2 where 1=1

3樓:

樓主為什麼要用一條啊?是為了實現要麼同時刪除,要麼都不刪除麼?如果是的話,可以這樣寫

if exists (select * from table1 where a='1') and exists (select * from table2 where a='1')

begin

begin transaction

delete from table1

if @@error<>0

begin

rollback transaction

enddelete from table2if @@error<>0

begin

rollback transaction

endcommit transactionend

4樓:

delete from table1;delete from table2 ;

5樓:靈貓的羽毛

delete from table1 where a=1

delete from table2 where a=1

只能分開寫,想偷下懶是不行的哦

6樓:從瓃

要想用 一條語句學 就用觸發器 做

7樓:

不清楚..幹嘛不用兩條語句..

delete一條語句可以同時刪除2個表裡的資料嗎

8樓:熱情的寶寶哭

1、delete from t1 where 條件2、delete t1 from t1 where 條件3、delete t1 from t1,t2 where 條件4、delete t1,t2 from t1,t2 where 條件前3者是可行的,第4者不可行。

也就是簡單用delete語句無法進行多表刪除資料操作,不過可以建立級聯刪除,在兩個表之間建立級聯刪除關係,則可以實現刪除一個表的資料時,同時刪除另一個表中相關的資料。

高手!如何一條sql語句刪除多張表中記錄

9樓:匿名使用者

最好不要使用這種方式,包括級聯刪除,觸發器但不限於資料庫的自動處理功能,這樣的後果就是資料在後臺自動被改動,在我看來,資料的不可控情況是極度糟糕的問題,而且這樣的情況是程式**編寫混亂造成的嚴重後果,我認為,資料庫就只是拿來存放資料的,所有的邏輯都應該跟資料庫無關,資料庫的理想狀態應該是所有資料都是獨立的,所有的邏輯都應該是外部情況。

10樓:匿名使用者

思路錯了吧!明明是兩句sql執行的語句!

如果你想在第二句出錯的情況下,第一句也不執行的話可以設定autocommit 設定為false

然後用rollback.

11樓:郭某人來此

建議你寫個儲存過程,我寫的一個,讓你參考一下!cardno是自定義的資料型別!用觸發器容易出錯

create procedure delfixuser@cardno cardno

asdeclare @carno carnoselect @carno=車輛號碼 from fixcardindextable

where 卡號=@cardno

delete from allcardindextablewhere 卡號=@cardno

delete from fixcardindextablewhere 卡號=@cardno

delete from fixcardenddatetablewhere 卡號=@cardno

delete from cardpasswordtablewhere 卡號=@cardno

delete from usercarinfotablewhere 車輛牌號=@carno

說明:刪除一個固定使用者記錄,同時從allcardindextable、fixcardindextable、fixcardenddatetable、cardpasswordtable和usercarinfotable表中刪除相應的記錄。

12樓:第8感超人

不用觸發器也可以 在關係圖裡面設定聯級刪除

13樓:朱星的布拉格

delete t3 where t3.b列 in(select b列

from t2

inner join t1 on t2.a列=t1.a列);delete t2

where t2.a列 in

(select a列

from t1

)說明兩個sql語句中間加個分號,可一次執行。你可點選sql server 選單下方的「新建查詢」,在彈出的新視窗中執行上述語句。一個普通的sql語句刪除兩個表做不到。

這與sql server 的內在機制有關。

14樓:匿名使用者

一條語句是不可能刪除多張表中記錄的

15樓:

可以使用觸發器trigger

mysql delete問題,我建了三張關聯的表,如何通過delete語句同時刪除三張表的同一id內容? 5

16樓:匿名使用者

例如三個表a,b,c的關聯:

如果b的二級資料

或c的二級資料不一定存在,用以下語句專:

delete a,b,c from a left join b on b.id_b=a.id left join c on c.

id_c=a.id where (b.id_b=a.

id) or (c.id_c=a.id);

刪除3個表都存在的關聯資料:屬

delete a,b,c from a,b,c where a.id=b.id_b and a.id=c.id_c。

17樓:東風冷雪

這不可能吧,

sql語句

delete table_name 欄位限定了,一個一個散除很好啊。

18樓:匿名使用者

delete a,b,c from a,b,c where a.id=b.id and b.id=c.id

【oracle】delete語句同時刪除多張表(**等)

19樓:

如果你是要刪除2長表裡的資料,可以分步做啊:

delete from a where a.ida=1;

delete from b where b.idb=1;

commit;

像你那種做法,是不可行的,不符合oracle的語法。oracle只允許從一張表中刪除資料。你是不是想刪除a表中的資料(b表不變),但要這些資料存在於b表中,可以使用:

delete from a where (a.ida, a.name) in (select a.

ida, a.name from a ,b where a.ida=b.

idb);

commit;

這些語句我都在oracle92中測試過,不知道你究竟需要做什麼?

20樓:

delete from a where a.ida=1delete from b where b.idb=1這樣要寫兩句

請描述你的具體要求

如果你的表的id欄位都是有規律的ida,idb,...即id+表名則可以這樣刪除所有表的id表名=1的資料

declare @sqlstr varchar(8000)select @sqlstr=''

select @sqlstr=@sqlstr+'delete from ['+[name]+']'+' where id['+[name]+']=1'+char(10)

from sysobjects where xtype=n'u'

exec(@sqlstr)

21樓:匿名使用者

delete (select a.ida as ida from a inner join b on a.ida = b.idb ) where ida = 1

這樣試試看

22樓:匿名使用者

你那樣寫的是不成立的啊.

這樣不就可以了嗎?

str=" delete from a where a.ida=1 "

str+="delete from b where b.idb=1 "

兄弟快快吧!

如何用一條繩子打死結,如何用一條繩子打死結?

1 兩手握住繩子兩端,繩子兩頭成交叉狀,左手繩子放在右手下面,具體如下圖所示。2 將左手繩頭回繞壓住右手的繩子,具體如下圖所示。3 右手繩頭下穿左邊的兩股繩子,具體如下圖所示。4 右手繩頭從下方從右手繩空上穿,具體如下圖所示。5 將繩子拉緊,具體如下圖所示。6 具體完成圖如下所示。死結,是指一條繩子...

請教一條SQL語句

update menber.birth set birth year birth 前提是birth是字元型資料 如果如樓上的說法是datetime資料,又需要頻繁訪問,只能增加一個yearofbirth列了。然後如法update 我把語句給你 update menber set birth sele...

Java編寫一條for語句,計算122232n

import java.util.scanner 匯入scanner類 public class a system.out.println sum 輸出結果 public int cal um int n return total 計算1 2 2 2 3 2 n 2 public int cal i...