SQL觸發器


一 簡介

    觸發器是一種特殊的存儲過程,在對表進行插入、更新、刪除的時候會觸發執行。觸發器一般用在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM