定義:
何為觸發器?
在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觸發器例項1
sql觸發器例項1 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。我為什麼要使用觸發器?比如,這麼兩個表 create table ...
SQL 觸發器例項
sql觸發器例項1 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。我為什麼要使用觸發器?比如,這麼兩個表 create table ...
SQL觸發器例項
2 建立觸發器 根據需求分析,為bbs type表 bbs lanmu表 bbs topic表分別建立after觸發器,該觸發器由delete事件觸發。建立在這3個表之上的觸發器之間是巢狀觸發的關係,即bbs type表上的觸發器觸發bbs lanmu表上的觸發器,bbs lanmu表上的觸發器再觸...