日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Sqlserver > SQL觸發器刪除數據庫中的級聯記錄

SQL觸發器刪除數據庫中的級聯記錄

來源:程序員人生   發布時間:2013-12-13 05:06:46 閱讀次數:2849次
SQL觸發器:當改變(增、刪、改)數據表的記錄時,綁定在SQL語句(增、刪、改)中的觸發器能夠觸發某些事件或者函數,所以我們可以在觸發器中編寫一些處理語句。

比如,當我們刪除新聞類別的時候,由于外鍵的原因,我們無法刪除新聞類別下有新聞內容的記錄,但是通過觸發器,我們就可以實現。

delete from category where id=5 --sql刪除語句

create trigger trigcategorydelete --當執行sql刪除語句時,執行觸發器

on category

after delete

as

begin

delete news where caId=(select id from deleted) --刪除對應新聞類別的新聞內容

end

照一般的思維,這樣就可以同時刪除新聞類別和其下的新聞內容,但是這樣執行卻不成功。是因為關鍵字AFTER,AFTER表示在執行SQL刪除語句后,再執行觸發器里的語句。這樣一來,順序同樣是先刪除新聞再刪除新聞內容,肯定不成功。

改變關鍵字after為instead of

instead of,表示代替delete操作,而沒有真正delete from category where id=5,當category表的刪除時,同時觸發了trigcategorydelete觸發器,但是由于有instead of關鍵字,所以本身并不執行刪除操作,而是執行觸發器里的sql語句,從而可以替代之前的SQL語句。比如:

create trigger trigcategorydelete

on category

instead of delete

as

begin

declare @id int --定義一個變量id

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

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

delete category where id=@id --然后刪除新聞類別

end

當我們執行 delete from category where id=5時,id=5的類別并沒有真正刪除,而是轉而執行觸發器里面的SQL語句

關于deleted表:

Deleted表用于存儲 DELETE 和 UPDATE 語句所影響的行的復本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,并傳輸到deleted表中。Deleted表和觸發器表通常沒有相同的行。(//最后一句不是怎么明白啊?) by google

刪除一條記錄時候,他會把刪除的這條記錄放在一張臨時表里,當你對category表進行刪除時,在SQL返回的結果消息里面會提示出你刪除的記錄。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品免费 | 欧美日韩在线一区二区三区 | 日韩一二 | 欧美日韩精品综合 | 欧美日韩三级 | 在线视频h | 亚洲三级电影网 | 九九人人| 91网站在线看 | 亚洲国产一二三 | 久久国产欧美一区二区三区免费 | 精品久久久久久久久久中出 | 国产一区二区不卡 | 日韩欧美一区二区三区 | 91在线视频播放 | 欧美国产高清 | 久久久久久99| 国产高清精品在线 | 国产视频福利 | 中文在线√天堂 | 久久这里只有 | 欧美精品1区2区3区 日本特黄a级高清免费大片 | 精品国产一区三区 | 日本欧美在线 | 日韩一区二区精品视频 | 综合网视频 | 日韩免费av | 国产在线观看免费麻豆 | 最新日韩精品 | 黄色1级视频| 久久精品8 | 国产精品久久中文字幕 | 国产精品久久久久一区二区三区 | 一区二区三区精品视频 | 亚洲视频在线一区 | 日韩看片| 国产91久久精品一区二区 | 国产在线小视频 | 日韩免费视频一区二区 | 国产精品久久久久久吹潮 | 久久久久久久久国产精品 |