sql server觸發器用到的兩個邏輯表:
deleted和inserted分別代表操作所變更的舊記錄集和操作所產生的新記錄集。
其中:執行insert操作後deleted邏輯表為空,inserted邏輯表有資料;
執行delete操作後inserted邏輯表為空,deleted邏輯表有資料;
執行update操作後兩個邏輯表都有資料,deleted為舊記錄集,inserted為新記錄集。
以上操作變更幾條記錄,邏輯表就會產生幾條記錄,多條記錄可以在觸發器中用游標處理。
如: create
trigger
qf_trigger
onuser_table
forinsert
,delete
,update
asbegin
declare
@userid
varchar(20
)--儲存舊值
declare
rscursor
forselect
userid
from
deleted
open
rsfetch
next
from
rsinto
@userid
while
@@fetch_status=0
begin
ifupdate
(使用者名稱)
insert
into
old_users(userid)
values
(@userid
)fetch
next
from
rsinto
@userid
endclose
rsdeallocate
rs--
儲存新值
declare
rscursor
forselect
userid
from
inserted
open
rsfetch
next
from
rsinto
@userid
while
@@fetch_status=0
begin
ifupdate
(使用者名稱)
beginif(
@userid='
admin')
begin
raiserror('
此使用者名稱禁用!',
10,1)
with
nowait
rollback
return
endinsert
into
new_users(userid)
values
(@userid
)end
fetch
next
from
rsinto
@userid
endclose
rsdeallocate
rsend
在用insert,delete,update更新表時,如果觸發器執行的操作失敗,對錶的操作也會回滾,並提示觸發器程式產生錯誤的位置與原因。
SQLSERVER的觸發器
觸發器的定義 觸發器是一種特殊型別的儲存過程,他不同於前面介紹過的一般的儲存過程 在sql內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...
SQL Server 中 觸發器 簡單示例
注意 對 inserted,deleted 的查詢 使用 當person表 新增 一條person記錄時 將 該記錄的主鍵personname 儲存在changetable表中 use testdb if exists select name from sysobjects where name p...
sqlserver觸發器複習
create table a a1 int,a2 int create table b b1 int,b2 int insert into a values 1,0 insert into b values 1,0 create trigger tri update a2 a on a for up...