SQL觸發器例項

2022-03-22 19:51:10 字數 1828 閱讀 6317

(2)建立觸發器

根據需求分析,為bbs_type表、bbs_lanmu表、bbs_topic表分別建立after觸發器,該觸發器由delete事件觸發。建立在這3個表之上的觸發器之間是巢狀觸發的關係,即bbs_type表上的觸發器觸發bbs_lanmu表上的觸發器,bbs_lanmu表上的觸發器再觸發bbs_topic表上的觸發器。本文中使用的資料庫為microsoft sql server 2005。要讓觸發器能巢狀觸發必須在資料庫「屬性」中,將「遞迴觸發器已啟用」設定為true。

1.為bbs_type表(儲存大版塊資訊)建立觸發器deltype。該觸發器功能是刪除bbs_lanmu表中屬於剛刪除的大版塊的所有分論壇資訊。

create trigger [deltype] on [dbo].[bbs_type]

after delete

asbegin

declare @typeid int

select @typeid=typeid from deleted --獲得要被刪除的版塊id

delete from dbo.bbs_lanmu where typeid=@typeid

end2.為bbs_lanmu表(儲存分論壇資訊)建立觸發器dellanmu。該觸發器功能是刪除bbs_topic表中屬於剛刪除分論壇的所有帖子資訊。

create trigger [dellanmu] on [dbo].[bbs_lanmu]

after delete

asbegin

declare @lmid int

select @lmid=lmid from deleted --獲得要被刪除的分論壇id

delete from dbo.bbs_topic where lmid=@lmid

end3.為bbs_topic表(儲存帖子資訊)建立觸發器deltopic。該觸發器功能是刪除bbs_reply表中屬於剛刪除帖子的所有回覆資訊。

create trigger [deltopic] on [dbo].[bbs_topic]

after delete

asbegin

declare @tid int

select @tid=tid from deleted --獲得要被刪除的帖子id

delete from dbo.bbs_reply where tid=@tid

end執行過程

觸發器執行過程如圖pic-2。

當資料操作層對資料表bbs_type發出delete一條記錄的時候,觸發器deltype被觸發,此觸發器將刪除bbs_lanmu表中屬於剛刪除的大版塊的所有分論壇資訊。

當deltype觸發器對資料表bbs_lanmu刪除一條記錄時,又觸發bbs_lanmu表上的觸發器dellanmu,此觸發器將刪除bbs_topic表中屬於剛刪除分論壇的所有帖子資訊。

當dellanmu觸發器對資料表bbs_topic刪除一條記錄時,又觸發觸發器deltopic,此觸發器將刪除bbs_reply表中屬於剛刪除帖子的所有回覆資訊。

至此資料庫中與bbs_type中刪除記錄相關聯的所有記錄全部刪除,保證了資料庫各表資料的完整性與一致性。這個過程是在資料庫中自動進行的,因此速度非常快,使用者只需要對bbs_type表發出刪除一條記錄的命令,其他表中相關的記錄會自動刪除。

3.1.總結:

觸發器能保持資料的完整性與一致性,它可以方便地基於乙個表的修改,自動更新其他相關表的記錄,以保證資料的完整性。在資料庫的應用中,觸發器扮演著很重要的角色。無論是作為提供高階參照完整性功能的途徑,還是執行自動維護非正規化資料的任務,觸發器都能幫助使用者實現滿足實際需要的規則,簡化業務邏輯,並使系統更方便更有效

SQL 觸發器例項

sql觸發器例項1 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。我為什麼要使用觸發器?比如,這麼兩個表 create table ...

SQL觸發器例項講解

sql觸發器例項1 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。我為什麼要使用觸發器?比如,這麼兩個表 create table ...

SQL觸發器例項1

sql觸發器例項1 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。我為什麼要使用觸發器?比如,這麼兩個表 create table ...