觸發器類型
insert 觸發器
delete 觸發器
update 觸發器
Inserted和Deleted兩個臨時表的作用
Inserted:對于插入記錄操作來說,插入表里存放的是要插入的數據;對于更新記錄操作來說,插入表里存放的是要更新的記錄。
Deleted:對于更新記錄操作來說,刪除表里存放的是被更新記錄;對于刪除記錄操作來說,刪除表里存入的是被刪除的舊記錄。
即
1
參考:http://www.cnblogs.com/liushuijinger/archive/2012/06/10/2543941.html
觸發器寫法
CREATE TRIGGER Trigger_Name --觸發器名,在一個數據庫中觸發器名是唯一的。
ON Table_Name | View_Name --觸發器所在的表或者視圖。
AFTER(FOR)|Instead Of INSERT,DELETE,UPDATE --定義成AFTER或Instead Of類型的觸發器。
--AFTER跟FOR相同,不可在視圖上定義AFTER觸發器
-- 后面是觸發器被觸發的條件,最少有一個,可以郵多個。如果有多個用逗號分開,順序無要求。
AS --觸發器要執行的操作
BEGIN
--BEGIN跟END組成一個代碼塊,可以寫也可以不寫,如果觸發器中執行的SQL語句比較復雜,用BEGIN和END會讓代碼更加整齊,更容易理解。
END
GO --GO就代表結操作完畢
例子
create trigger trig_insert_student
on student for insert
as
declare @number int
-- 從inserted臨時表中獲取記錄值
select @number=StudentNumber
from inserted --臨時表inserted
update student set Name='觸發器修改'
where StudentNumber=@number
go
create trigger trig_insert_transInfo
on transInfo for insert
as
declare @_transType char(4), --定義變量
@_transMoney money,
@_cardID char(10),
@balance money --所剩余額
-- 從inserted臨時表中獲取記錄值
select @_transType = transType,
@_transMoney = transMoney,
@_cardID = cardID
from inserted --臨時表inserted
if(@_transType = '支取')
update bank set currentMoney=currentMoney-@_transMoney
where cardID = @_cardID;
else
update bank set currentMoney=currentMoney+@_transMoney
where cardID = @_cardID;
--顯示交易金額
print '交易成功! 交易金額:'
+ convert(varchar(20),@_transMoney)
--顯示所剩余額
select @balance = currentMoney from bank
where cardId = @_cardID
print '卡號:'+@_cardID
+ ' 余額:'+convert(varchar(20),@balance);
go
參考:http://www.cnblogs.com/xugang/archive/2010/02/20/1669619.html