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的使用了!!!