SQL 觸發器例項

2021-08-16 01:40:29 字數 1912 閱讀 5237

sql觸發器例項1

定義: 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。 

常見的觸發器有三種:分別應用於insert , update , delete 事件。 

我為什麼要使用觸發器?比如,這麼兩個表: 

create table student(             --學生表 

studentid int primary key,      --學號 

.... 

) create table borrowrecord(              --學生借書記錄表 

borrowrecord  int identity(1,1),      --流水號   

studentid     int ,                   --學號 

borrowdate    datetime,               --借出時間 

returndate    datetime,               --歸還時間 

... 

) 用到的功能有: 

1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號); 

2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄。 

等等。 

這時候可以用到觸發器。對於1,建立乙個update觸發器: 

create trigger trustudent 

on student                        --在student表中建立觸發器 

for update                         --為什麼事件觸發 

as                                       --事件觸發後所要做的事情 

if update(studentid)            

begin 

update borrowrecord  

set studentid=i.studentid 

from borrowrecord br , deleted  d ,inserted i     --deleted和inserted臨時表 

where br.studentid=d.studentid 

end        

理解觸發器裡面的兩個臨時的表:deleted , inserted 。注意deleted 與inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。  

乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是: 

虛擬表inserted                    虛擬表deleted 

在表記錄新增時    存放新增的記錄                        不儲存記錄 

修改時          存放用來更新的新記錄                  存放更新前的記錄 

刪除時          不儲存記錄                            存放被刪除的記錄 

乙個update 的過程可以看作為:生成新的記錄到inserted表,複製舊的記錄到deleted表,然後刪除student記錄並寫入新紀錄。 

對於2,建立乙個delete觸發器 

create trigger trdstudent 

on student 

for delete 

as delete borrowrecord  

from borrowrecord br , delted d 

where br.studentid=d.studentid 

從這兩個例子我們可以看到了觸發器的關鍵:a.2個臨時的表;b.觸發機制。 

sql觸發器例項2

SQL觸發器例項

2 建立觸發器 根據需求分析,為bbs type表 bbs lanmu表 bbs topic表分別建立after觸發器,該觸發器由delete事件觸發。建立在這3個表之上的觸發器之間是巢狀觸發的關係,即bbs type表上的觸發器觸發bbs lanmu表上的觸發器,bbs lanmu表上的觸發器再觸...

SQL觸發器例項講解

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

SQL觸發器例項1

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