SQL觸發器例項1

2022-04-23 14:15:24 字數 2014 閱讀 8965

定義:

何為觸發器?

在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表上的觸發器再觸...