SQL Server -为代码减负之触发器
来源:互联网 发布:下载贵金属软件 编辑:程序博客网 时间:2024/05/13 03:04
- 触发器是一张表的增删改操作,引起或触发对另一张表的增删改操作,所以触发器便有3种类型,分别是deleted触发器,Update触发器,insert触发器
- 触发器又根据替换原来的增删改操作,还是在原来的增删改完成之后进行增删改操作,分为Instead of触发器和For或者After触发器(for和after属于一种触发器)
- 触发器的使用涉及到两张非常重要的表用来保存已经改变或者已经在第一章被操作的表上不存在的记录,分别是虚拟表Inserted和虚拟表Deleted
虚拟表Inserted
虚拟表Deleted
在表记录新增时
存放新增的记录
不存储记录
修改时
存放用来更新的新记录
存放更新前的记录
删除时
不存储记录
存放被删除的记录
- 下面举一个在机房收费系统重构个人版中用到的易于理解的关于触发器的小例子
- 在我们删除T_OnWork_info表中的正在上机工作记录时,同时向T_Work_info表中写入工作记录,还同时将T_Admin_info表中的IsOn字段改为False
CREATE TRIGGER trigger_delOnWork ON T_OnWork_info FOR DELETE AS DECLARE @name varchar(10)DECLARE @loginDate varchar(10)DECLARE @loginTime varchar(10)DECLARE @logoutDate varchar(10)DECLARE @logoutTime varchar(10)DECLARE @comName varchar(10) SELECT @name =(SELECT NAME FROM deleted )SELECT @loginDate =(SELECT loginDate FROM deleted )-----deleted表用于存储T_OnWork表中已经删除的记录SELECT @loginTime =(sELECT loginTime FROM deleted )SELECT @comName =(SELECT comName FROM deleted )SET @logoutDate=convert(varchar(10),getdate(),101)SET @logoutTime =convert(varchar(10),getdate(),108) if (SELECT COUNT(*) FROM deleted )=1 BEGIN INSERT INTO T_Work_info(Name,loginDate,loginTime,logoutDate,logoutTime,comName) VALUES(@name,@loginDate ,@loginTime ,@logoutDate,@logoutTime,@comName ) UPDATE T_Admin_info SET IsOn='False' WHERE Name=(SELECT Name FROM deleted ) ROLLBACK TRAN --事务回滚 END
怎么样,触发器很简单吧,大家可以尝试着用用,触发器+事务的回滚机制,很容易地做到了为代码减负
- 在我们删除T_OnWork_info表中的正在上机工作记录时,同时向T_Work_info表中写入工作记录,还同时将T_Admin_info表中的IsOn字段改为False
5 0
- SQL Server -为代码减负之触发器
- 为代码减负之<一>触发器(SQL)
- SQL Server 为代码减负之存储过程
- 为代码减负之<二>存储过程(SQL)
- 为代码减负之<三>视图(SQL)
- SQL server 之 触发器
- sql Server 触发器入门代码~~
- 【SQL Server】-- 一触即发之触发器
- sql server 数据库之触发器
- SQL Server 2008中的代码安全之二:DDL触发器与登录触发器
- 回头为自己的代码减负
- VB.NET之旅--为代码减负-DataGridView直接绑定数据源
- 浅谈SQL Server 数据库之触发器
- 初学sql server 2008之触发器
- 初学sql server 2008之触发器
- 1.SQL Server DML触发器之AFTER触发器
- 【sql server】SQL触发器
- 精简代码,为网站减负的十大建议
- 用 GDB 调试程序---很全面,我觉得可以叫GDB大全了
- IO流中字节流的应用
- HDU 1181 变形记 (BFS)
- 老农猫、狗、鱼过河问题 黑马测试题,个人的解答.靠程序搜索答案 只给判断条件,无人为辅助判断
- Container With Most Water
- SQL Server -为代码减负之触发器
- 跨服务器修改数据
- QT之父子对象机制
- js中document.write的那点事
- Java Observer pattern 实例 , 用于 monitor
- hdu 4971
- JAVA多线程变量的深入认识(二)
- Java分块传输的思路
- servlet filter listener interceptor 作用和区别