您的位置:首页 > 其它

黑马视频-触发器

2015-11-18 19:25 148 查看
触发器inserted表与deleted表执行insert语句,使用inserted表

执行delete语句,使用deleted表
执行update语句,旧数据放到deleted表,新数据放到inserted表

触发器:自动化,减少手动到来误操作触发器没有执行完毕,就会一直占用表,其他链接不能使用该表output.inserted.列名1、DML触发器:insert delete update(不支持select) after触发器(for) instead of 触发器(不支持before触发器) 2、DDL触发
create trigger tbl_TblClass_insert_after

on TblClass after insert

as

begin

declare @id int,

declare @name varchar(50),

declare @desc varchar(50)

select @id=tClassId ,@name=tclassName,@desc=ClassDesc from inserted

print @id

print @name

print @desc

end

--测试

insert into TblClass values('班级名称','班级描述')

[/code]将删除的数据备份到另一个表中
create trigger tri_TblClass_delete_after

on TblClass after delete[,insert]

as

begin

insert into TblClass_Bak select * from deleted

end

[/code]
sql触发器是表级触发器,无论删除多少行或者插入多少行数据,只触发一次是按照语句触发的,每次执行一次语句,触发一次触发器不会每条语句都触发
代理实现备份:建立作业
create trriger tri_TblClass_delete_instead_of

on TblClass instead of delete

as

begin

insert into TblClassBak select * from deleted

end


--使用 instead of 触发器后,原来删除操作被 insert into TblClassBak

[/code]尽量避免在触发器中执行耗时操作,因为触发器会与Sql语句认为在同一个事务。事务不结束就无法释放锁
避免在触发器中较复杂的操作,影响触发器性能,要想编写高效触发器考虑的因素较多
触发器编写时注意对多行触发时的处理 (一般不建议使用游标,性能问题)

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: