何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。
常見的觸發器有三種:分別應用於insert , update , delete 事件
用到的功能有:1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄,等等。
這時候可以用到觸發器。對於1,建立乙個update觸發器:
create
trigger
trustudent on
student
--在student表中建立觸發器
forupdate
--為什麼事件觸發
as--
事件觸發後所要做的事情
ifupdate
(studentid)
begin
update
borrowrecord
setstudentid
=i.studentid
from
borrowrecord br , deletedd ,
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
onstudent
fordelete
asdelete
borrowrecord
from
borrowrecord br , delted d
where
br.studentid
=d.studentid
從這兩個例子我們可以看到了觸發器的關鍵:a.2個臨時的表;b.觸發機制。
Sql Server資料庫觸發器例項講解
定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。sql server 2000定義了新的觸發器,這裡不提 我為什麼要使用觸發器?比如,...
Sql Server資料庫觸發器例項講解
別處轉的 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。sql server 2000定義了新的觸發器,這裡不提 我為什麼要使用觸發...
Oracle資料庫觸發器例項
需求 在修改表qdyth.jzfpjcxx時,要實時記錄表中的資料變動情況 協商後結果 建立新錶記錄資料變動情況 實現手段 資料庫觸發器 建立或修改觸發器 tr jzfpjcxx 2 create or replace trigger tr jzfpjcxx 2 觸發條件 before delete...