–insert 触发器
create trigger tri_insert
on student  –将要进行更改的表名
for insert  –给表插入一条数据的时候触发
as
declare @student_id char(10) –定义一个变量
select @student_id=s.student_id from  –把查询出的指定字段的值赋值给变量
student s inner join inserted i
on s.student_id=i.student_id
if @student_id=’0000000001′
begin
   raiserror(‘不能插入1的学号!’,16,8)
    rollback tran
end
go

–update触发器
create trigger tri_update
on student –将要进行更改的表名
for update –给表修改一条数据的时候触发
as
if update(student_id)
begin
   raiserror(‘学号不能修改!’,16,8)
    rollback tran
end
go


–delete触发器
create trigger tri_delete
on student –将要进行更改的表名
for delete –给表删除一条数据的时候触发
as
declare @student_id varchar(10)
select @student_id=student_id from deleted
if @student_id=’admin’
begin
   raiserror(‘错误’,16,8)
    rollback tran
end

解释在删除(delete)数据的时候,可以假定数据库将要删除的数据放到一个deleted临时表中,我们可以向读取普通的表一样,select 字段 from deleted
而insert的时候道理一样,只不过是把要插入的数据放在inserted表中。
更新操作可以认为是执行了两个操作,先把那一行记录delete掉,然后再insert,这样update操作实际上就对deleted表和inserted表的操作,所以不会有updated表了,有的时候两个表是主外键关系,想删除主表数据的同时把子表相关的数据也删除,这个时候如果用触发器就没有效果了,因为这个触发器是在你删除表后才触发的,这个时候直接终止,提示“有主外键关系,不能删除等”,所有这样的删除触发器是没有效果的

原文地址:http://www.cnblogs.com/lb809663396/p/16880405.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性