sql server觸發器的簡單使用

2021-08-22 15:40:14 字數 1634 閱讀 9675

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...