一 簡介
觸發器是一種特殊的存儲過程,在對表進行插入、更新、刪除的時候會觸發執行。觸發器一般用在check約束或者一些后續事務邏輯的處理。觸發器和普通的存儲過程的區別是:觸發器是當對某一個表進行操作。諸如:update、insert、delete這些操作的時候,系統會自動調用執行該表上對應的觸發器。所以觸發器可以用來實現對表實施復雜的完整性約束。
二 相關參數
觸發器觸發的時候兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張表的結構與被改觸發器應用的表的結構相同,存儲的數據是要進行操作的數據,當觸發器完成工作后,這兩張表就會被刪除。Inserted表的數據是插入或是修改后的數據,而deleted表的數據是更新前的或是刪除的數據。

三 Instead of 和 After觸發器
SQL Server2000提供了兩種觸發器:Instead of 和After 觸發器。這兩種觸發器的差別在於他們被激活的同:
Instead of觸發器用於替代引起觸發器執行的T-SQL語句。除表之外,Instead of 觸發器也可以用於視圖,用來擴展視圖可以支持的更新操作。
After觸發器在一個Insert,Update或Deleted語句之后執行,進行約束檢查等動作都在After觸發器被激活之前發生。After觸發器只能用於表。
一個表或視圖的每一個修改動作(insert,update和delete)都可以有一個instead of 觸發器,一個表的每個修改動作都可以有多個After觸發器。
四 觸發器的添加,修改,刪除,查看操作
4.1 添加創建語法
create trigger trigger_name
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql_statement
4.2 修改語法
alter trigger trigger_name--類似於修改表結構
4.3 刪除語法
drop trigger trigger_name
4.4 查看觸發器
select * from sys.triggers
select * from sysobjects where xtype='TR'
---- 查看單個觸發器
exec sp_helptext '觸發器名'
五 觸發器的簡單實例
--1 創建觸發器,觸發添加內容
Create TRIGGER [dbo].[s1]
ON [dbo].[A]
FOR insert
as
DECLARE @id VARCHAR(50)
DECLARE @name varchar(50)
DECLARE @nos INT
SELECT @id=[ID] ,@name=a.Name,@nos=a.number FROM a AS a
INSERT INTO B
(
IC,
CName,
No
-- AID -- this column value is auto-generated
)
VALUES
(
@id,
@name,
@nos
)
---2刪除內容,觸發級聯刪除
Create trigger [dbo].[tri_deletemember]
on [dbo].[Member]
for delete
as
declare @ID VARCHAR(150)
select @ID=ID from deleted
delete from MemCount where ID=@ID
delete from MemMoney where @ID=@ID
