触发器

触发器是在对表进行增删改操作时自动执行的存储过程

触发器通常用于强制业务规则

触发器是一种高级约束,可以定义比用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为列属性

 

 

 

 

你可能感兴趣的:(触发器)