觸發器使用(1)

2021-09-24 15:58:29 字數 1523 閱讀 3214

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

常見的觸發器有三種:分別應用於insert , update , delete 事件。(sql server 2000定義了新的觸發器,這裡不提)

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

用到的功能有:1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄,等等。

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

trigger

trustudent

onstudent

--在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觸發器

trigger

trdstudent

onstudent

fordelete

asdelete

borrowrecord

from

borrowrecord br , delted d

where

br.studentid

=d.studentid

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

這裡我們只講解最簡單的觸發器。複雜的容後說明。

事實上,我不鼓勵使用觸發器。觸發器的初始設計思想,已經被「級聯」所替代。

觸發器使用

觸發器是一種特殊的儲存過程,她不能被顯示的呼叫,而是在對錶增刪改操作後被啟用。所以可以用觸發器對來實施複雜的完整性約束。after 觸發器和instead of 觸發器 sql server 2000 支援兩種型別的觸發器 after 觸發器和instead of 觸發器。其中after 觸發器即為...

mysql 觸發器 觸發器使用

1 了解什麼是觸發器?mysql 的觸發器和儲存過程一樣,都是嵌入到mysql的一段程式,觸發器 是由事件觸發某個動作,這些事件包括,插入 更新 刪除等語句。如果定義了觸發程式,觸發器就會觸發執行相應的操作。觸發器 trigger 是個特殊的儲存過程,不同的是,執行儲存過程要使用call語句來呼叫,...

oracle觸發器使用

size medium 語法規則 create or replace trigger 模式.觸發器名 before after insert delete update of 列名 on 表名 for each row when 條件 pl sql塊 說明 for each row的意義是 在一次操...