自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用SQL觸發(fā)器刪除級(jí)聯(lián)記錄

數(shù)據(jù)庫(kù) SQL Server
SQL觸發(fā)器:當(dāng)改變(增、刪、改)數(shù)據(jù)表的記錄時(shí),綁定在SQL語(yǔ)句(增、刪、改)中的觸發(fā)器能夠觸發(fā)某些事件或者函數(shù),所以我們可以在觸發(fā)器中編寫(xiě)一些處理語(yǔ)句。

下文將為您介紹使用SQL觸發(fā)器來(lái)刪除級(jí)聯(lián)揭露的方法,并附相關(guān)實(shí)例,供您參考,希望對(duì)您有所幫助。

SQL觸發(fā)器:當(dāng)改變(增、刪、改)數(shù)據(jù)表的記錄時(shí),綁定在SQL語(yǔ)句(增、刪、改)中的觸發(fā)器能夠觸發(fā)某些事件或者函數(shù),所以我們可以在觸發(fā)器中編寫(xiě)一些處理語(yǔ)句。

比如,當(dāng)我們刪除新聞?lì)悇e的時(shí)候,由于外鍵的原因,我們無(wú)法刪除新聞?lì)悇e下有新聞內(nèi)容的記錄,但是通過(guò)觸發(fā)器,我們就可以實(shí)現(xiàn)。

delete from category where id=5  --sql刪除語(yǔ)句

create trigger trigcategorydelete  --當(dāng)執(zhí)行sql刪除語(yǔ)句時(shí),執(zhí)行觸發(fā)器

on category

after delete

as

begin

delete news where caId=(select id from deleted) --刪除對(duì)應(yīng)新聞?lì)悇e的新聞內(nèi)容

end

照一般的思維,這樣就可以同時(shí)刪除新聞?lì)悇e和其下的新聞內(nèi)容,但是這樣執(zhí)行卻不成功。是因?yàn)殛P(guān)鍵字AFTER,AFTER表示在執(zhí)行SQL刪除語(yǔ)句后,再執(zhí)行觸發(fā)器里的語(yǔ)句。這樣一來(lái),順序同樣是先刪除新聞再刪除新聞內(nèi)容,肯定不成功。

改變關(guān)鍵字after為instead of#p#

instead of,表示代替delete操作,而沒(méi)有真正delete from category where id=5,當(dāng)category表的刪除時(shí),同時(shí)觸發(fā)了trigcategorydelete觸發(fā)器,但是由于有instead of關(guān)鍵字,所以本身并不執(zhí)行刪除操作,而是執(zhí)行觸發(fā)器里的sql語(yǔ)句,從而可以替代之前的SQL語(yǔ)句。比如:

create trigger trigcategorydelete

on category

instead of delete

as

begin

declare @id int  --定義一個(gè)變量id

select @id=id from deleted  --從deleted臨時(shí)表中,賦值id給變量@id

delete news where caId=@id  --先刪除該類(lèi)別下的所有新聞

delete category where id=@id  --然后刪除新聞?lì)悇e 

end

當(dāng)我們執(zhí)行 delete from category where id=5時(shí),id=5的類(lèi)別并沒(méi)有真正刪除,而是轉(zhuǎn)而執(zhí)行觸發(fā)器里面的SQL語(yǔ)句

關(guān)于deleted表:

Deleted表用于存儲(chǔ) DELETE 和 UPDATE 語(yǔ)句所影響的行的復(fù)本。在執(zhí)行 DELETE 或 UPDATE 語(yǔ)句時(shí),行從觸發(fā)器表中刪除,并傳輸?shù)絛eleted表中。Deleted表和觸發(fā)器表通常沒(méi)有相同的行。(//最后一句不是怎么明白?。浚?by google

刪除一條記錄時(shí)候,他會(huì)把刪除的這條記錄放在一張臨時(shí)表里,當(dāng)你對(duì)category表進(jìn)行刪除時(shí),在SQL返回的結(jié)果消息里面會(huì)提示出你刪除的記錄。

責(zé)任編輯:段燃 來(lái)源: CNBLOGS
相關(guān)推薦

2009-04-07 13:56:03

SQL Server觸發(fā)器實(shí)例

2011-03-28 10:05:57

sql觸發(fā)器代碼

2010-05-18 15:36:44

MySQL觸發(fā)器

2010-09-13 17:03:34

sql server觸

2010-05-18 15:58:39

MySQL觸發(fā)器

2011-05-20 14:06:25

Oracle觸發(fā)器

2009-04-26 22:27:54

觸發(fā)器密碼修改數(shù)據(jù)庫(kù)

2021-08-05 07:28:27

SQL觸發(fā)器結(jié)構(gòu)

2010-10-20 14:34:48

SQL Server觸

2010-10-22 11:10:43

SQL Server觸

2010-11-08 11:49:24

SQL Server管

2010-07-16 10:19:31

2010-11-12 15:35:55

SQL Server約

2010-07-06 14:47:03

SQL Server數(shù)

2010-10-12 10:10:55

mysql觸發(fā)器

2010-07-05 11:01:37

Sql Server觸

2011-03-03 09:30:24

downmoonsql登錄觸發(fā)器

2010-04-09 09:07:43

Oracle游標(biāo)觸發(fā)器

2010-11-11 10:03:58

SQL Delete命

2010-11-10 13:37:01

SQL Server觸
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)