黑马视频-触发器
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触发
[/code]将删除的数据备份到另一个表中
[/code]
sql触发器是表级触发器,无论删除多少行或者插入多少行数据,只触发一次是按照语句触发的,每次执行一次语句,触发一次触发器不会每条语句都触发
代理实现备份:建立作业
[/code]尽量避免在触发器中执行耗时操作,因为触发器会与Sql语句认为在同一个事务。事务不结束就无法释放锁
避免在触发器中较复杂的操作,影响触发器性能,要想编写高效触发器考虑的因素较多
触发器编写时注意对多行触发时的处理 (一般不建议使用游标,性能问题)
来自为知笔记(Wiz)
执行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)
相关文章推荐
- 自定义exception
- 九项重要的职业规划提示(转自W3School )
- mysql中 的 ENGINE = innodb; 是什么意思?
- nyoj--747--蚂蚁的难题(三)(dp背包)
- 安装cmake 出现胡问题
- oracle数据库的问题和大数据的前景问题
- 转义字符的应用
- 引用 google-play-services.jar
- 堆和栈的区别(转过无数次的文章)
- RelativeLayout 知识点
- nginx 502
- 字符串反转
- 谈一谈:抽象工厂+反射+配置文件 实现数据访问程序
- 初来大学
- 命令行执行Qt程序
- web入门第三天
- iOS中几种数据持久化方案
- 命令行执行Qt程序
- Sprint 1 Review & Daily Scrum - 11/18
- 第11周项目2-用二叉树求解代数表达式