触发器(trigger)通常是指能启动其他设备的设备。在数据库里,触发器则是一类由事件驱动的特殊过程,该事件可以触发其他事件或一系列事件。通过数据库系统中的触发器机制,无需用户操作,系统就能够对内部或外部产生的事件自动做出响应。
除实现参照完整性以外,触发器还具有许多其他的功能:1)强化约束 2)跟踪变化 3)级联运行 4)存储过程的调用
触发器由三部分组成:1)事件:插入、删除、修改等引发触发器的操作 2)条件:引发触发器的条件 3)动作:引发触发器后的行为
触发事件包括表中行的插入、删除和修改,即执行insert、delete、update语句。除此以外,还可以指定其他条件为触发条件,如对某字段的修改。触发器的动作通常是一系列SQL语句。
1)创建触发器
create trigger trigi on customers for insert as begin declare @cols int set @cols=(select count(*) from customers) print 'customers表行数已增加,现在一共是'+space(1)+ltrim(str(@cols)+space(1)+'行。') end
create tigger trig3 on reg_members instead of insert as begin declare @cno_tmp char(5) declare @cname_tmp varchar(6) set @cno_tmp=(select cno from inserted) set @cname_tmp=(select cname from inserted) insert into customers values (@cno_tmp,@cname_tmp,null,null,'注册会员',null) end
create trigger trig3 on customers after insert as if(select count(*) from customers=100) begin update customers set crank='金卡会员' where cno=(select cno from inserted) print '您是第100名注册用户,作为幸运者,系统已将您升级为金卡会员。' end
2、触发器的更改与删除
alter trigger trig3 on customers after insert as if(select count(*) from customers)=1000 begin update customers set crank='VIP' where cno=(select cno from inserted) print '您是第1000名注册用户,作为幸运者,系统已将您升级为VIP' end
drop trigger trig3