触发器是在对表进行增删改操作时自动执行的存储过程
触发器通常用于强制业务规则
触发器是一种高级约束,可以定义比用check约束更为复杂的约束
可执行复杂的tsql语句(if/while/case)
可引用其他表中的列
从操作上触发器的类型
delete触发器
insert触发器
update触发器
从时机上触发器分
事后触发器
事前触发器
事中触发器
语法:
create trigger trigger_name
on table_name
[with encryption]
for | after[delete, insert, update] --for | after代表事后 效果一样的
as
t-sql语句
go
1 create trigger trig_update_bank 2 on bank 3 for update 4 as 5 declare @beforeMoney money, @afterMoney Money 6 select @beforeMoney = currentMoney from deleted 7 select @afterMoney = currentMoney from inserted 8 if abs(@afterMoney - @beforeMoney) > 20000 9 begin 10 print ‘交易金额:‘+ convert(varchar(8), abs(@afterMoney - @beforeMoney)) 11 raiserror(‘每笔交易不能超过2万块,交易失败‘,16,1) 12 end 13 go
列级update触发器
update触发器除了跟踪数据的变化外,还可以检查是否修改了某列的数据
使用update(列)函数检测是否修改了某列
/*
交易日期一般由系统自动产生,默认为当前日期。为了安全起见,一般禁止修改,以防舞弊。
*/
update(transDate) --transDate为列属性
原文:https://www.cnblogs.com/ftyl/p/12158122.html