SQLServer入门学习之(一句话学会触发器)

1. 首先,创建一个Trigger,这个Trigger防止输入过多相同EID的人员的信息(小于等于2条)

1 create trigger trg_att_inst
2 on Attendance
3 after insert
4 as
5 declare @IEid varchar(10)
6 select @IEid = Eid from inserted
7 if(select count(*) from Attendance where Attendance.Eid=@IEid)> 2
8 rollback
9 print '哈哈 你被终结了!不能输入多余3条Eid相同的记录哦亲!'

2.分析一下这段代码

1 create trigger trg_att_inst
2 on Attendance

在Attendance表中生成一个叫做trg_att_inst的触发器

after insert

这段代码的意思是在插入命令发生后触发,另外还有其他两个类似指令after=for,instead of字面意思表示取而代之发生,也就是阻止插入

1 as
2 declare @IEid varchar(10)
3 select @IEid = Eid from inserted
4 if(select count(*) from Attendance where Attendance.Eid=@IEid)> 2
5 rollback
6 print '哈哈 你被终结了!不能输入多余3条Eid相同的记录哦亲!'

这一部分是事务处理块了,意图是如果插入行的Eid在表中存在大于2条记录,则回滚不插入数据

3. 测试一下哈

Attendance表中已经有了两条Eid=3的记录,所以会阻止继续插入Eid等于3的数据哦

1 insert into Attendance(Eid
2       ,Date
3       ,result
4       ,details
5       ,remarks) values('3',cast('2009-01-01' as datetime),'','','')

在SMS中显示如下结果

4. 搞定收工,删除这个测试的Trigger

drop trigger trg_att_inst 

 

 

恭喜,你已经学会Tigger的使用了!!!

posted @ 2014-03-20 17:39  codekiss  阅读(549)  评论(0编辑  收藏  举报