SQL Server觸發器使用方法

2022-06-20 17:33:08 字數 1296 閱讀 9522

[tr_name]為觸發器名稱,[table_name]為觸發器依附的表,for後面為觸發時機,as後為觸發器主體,從begin開始到end結束。

create

trigger

[dbo

].[tr_name]on

[dbo

].[table_name

]for

insert,update

asbegin

--do something

end

觸發器在何時生效?當[table_name]

發生變化時生效,可選事件有:insert、update、delete;

可以多選,以逗號分隔,如:for insert,update

。inserted和deleted是記憶體表,用於臨時存放資料,結構與當前表相同(即列名及型別相同)。

資料庫在更新、刪除資料之前,新資料存放於inserted,舊資料存放於deleted。

inserted:即將insert、update的資料;

deleted:被update、delete前的資料。

begin

declare

@status

intdeclare

@interid

intselect

@interid

= finterid from

deleted

select

@status

= fstatus from

inserted

--do something with @status & @interid

end

在觸發器主體中,從記憶體中獲取有用的資料存放在變數中,在後續能發揮重要作用。

例如,獲取當前表的id,後續更新其他表時可定位到與當前表相關的記錄,而達到排除無關記錄的目的。

又或者,在資料更新之前,先判斷資料的合法性、邏輯性,根據條件執行不同的任務,或丟擲異常等等。

把關鍵字create改成alter即可。

注意:如果觸發器已經建立,不能對同乙個觸發器重複執行create命令。

可以直接drop trigger [tr_name]

,但是如果觸發器不存在時會報錯。

推薦的寫法是,先判斷觸發器是否存在,如果存在,刪除,否則跳過。

if

object_id ('

tr_name

', '

tr') is

notnull

drop

trigger tr_name

觸發器使用

觸發器是一種特殊的儲存過程,她不能被顯示的呼叫,而是在對錶增刪改操作後被啟用。所以可以用觸發器對來實施複雜的完整性約束。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的意義是 在一次操...