SQL Server 建立觸發器(trigger)

2021-08-21 18:32:12 字數 2266 閱讀 7258

觸發器簡介:

觸發器是一種特殊的儲存過程,它的執行不是由程式呼叫,也不是手動執行,而是由事件來觸發。觸發器是當對某乙個表進行操作。例如:update、insert、delete這些操作的時候,系統會自動呼叫執行該錶上對應的觸發器。

觸發器分類:

1、dml( 資料操縱語言 data manipulation language)觸發器:是指觸發器在資料庫中發生 dml 事件時將啟用。dml事件是指在表或檢視中對資料進行的 insert、update、delete 操作的語句。

2、ddl(資料定義語言 data definition language)觸發器:是指當伺服器或資料庫中發生 ddl 事件時將啟用。ddl事件是指在表或索引中的 create、alter、drop 操作語句。

3、登陸觸發器:是指當使用者登入 sql server 例項建立會話時觸發。如果身份驗證失敗,登入觸發器不會觸發。

其中 dml 觸發器比較常用,根據 dml 觸發器觸發的方式不同又分為以下兩種情況:

after 觸發器(之後觸發):其中 after 觸發器要求只有執行 insert、update、delete 某一操作之後觸發器才會被觸發,且只能定義在表上。

instead of 觸發器 (之前觸發):instead of 觸發器並不執行其定義的操作(insert、update、delete)而僅是執行觸發器本身。可以在表或檢視上定義 instead of 觸發器。

dml 觸發器有兩個特殊的表:插入表(instered)和刪除表(deleted),這兩張表是邏輯表。這兩個表是建立在資料庫伺服器的記憶體中,而且兩張表的都是唯讀的。這兩張表的結構和觸發器所在的資料表的結構是一樣的。當觸發器完成工作後,這兩張表就會被刪除。inserted 表的資料是插入或是修改後的資料,而 deleted 表的資料是更新前的或是已刪除的資料。

after 觸發器語法:

1 create [ or alter ] trigger [ schema_name . ]trigger_name   

2 on

3 [ with [ ,...n ] ]

4

5

6 as

7 8 ::=

9 [ native_compilation ]

10 [ schemabinding ]

11 [ execute as clause ]

instead of 觸發器語法:

1 create [ or alter ] trigger [ schema_name . ]trigger_name   

2 on

3 [ with [ ,...n ] ]

4

5

7 [ not for replication ]

8 as

9 10 ::=

11 [ encryption ]

12 [ execute as clause ]

13 14 ::=

15 assembly_name.class_name.method_name

ddl 觸發器語法:

1 create [ or alter ] trigger trigger_name   

2 on

3 [ with [ ,...n ] ]

4 [ ,...n ]

5 as

6 7 ::=

8 [ encryption ]

9 [ execute as clause ]

登陸觸發器語法:

1 create [ or alter ] trigger trigger_name   

2 on all server

3 [ with [ ,...n ] ]

4 logon

5 as

6 7 ::=

8 [ encryption ]

9 [ execute as clause ]

SQL SERVER 2008 建立觸發器

sqlserver觸發器內insert,update,delete三種狀態 create trigger tri product ordersnapshot on t product for insert,update,delete 如if exists select from inserted a...

SQLServer之建立LOGON觸發器

登入觸發器將為響應 logon 事件而激發儲存過程。與 sql server例項建立使用者會話時將引發此事件。登入觸發器將在登入的身份驗證階段完成之後且使用者會話實際建立之前激發。因此,來自觸發器內部且通常將到達使用者的所有訊息 例如錯誤訊息和來自 print 語句的訊息 會傳送到 sql serv...

建立觸發器

視覺化資料庫工具 對於 microsoft sql server 資料庫,可以在 transact sql 中編寫觸發器,而對於 oracle 資料庫,則可以在 pl sql 中進行編寫。通過指定下列內容建立觸發器 建立觸發器 在 伺服器資源管理器 中,展開 表 資料夾。右擊要在其上建立觸發器的表名...