架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4026|回复: 1

数据库基础之触发器

[复制链接]
发表于 2019-3-24 21:20:05 | 显示全部楼层 |阅读模式



前言

今天整理一下触发器的使用,虽然在项目中,一般都不建议使用触发器,但是我们还是需要了解一下触发器的使用。

正文

触发器的使用。先准备今天要使用的表。创建一个 NewTest表 和 NewTest_log表



#触发器

是一个特殊的存储过程,不是自己调用,而是因为执行某一个操作而自动的触法,就像事件。
使用:监视操作和补充约束。
在前言中,提到一般不建议使用触发器,是因为性能和维护。在实际项目中,一般不容易注意到触发器,给后期的维护会带来一定的困难。



我们对表格数据的所有操作都临时存在这两张表中,“inserted”,“deleted”。我们可以利用这两张临时表进行一些数据的记录,或者业务的约束,修改 等。

下面我们给NewTest表创建一个触发器:



创建这个触发器之后,我们来删除一下表数据 “delete from ADB..NewTest”,再然后查询一下 “select * from  ADB..NewTest”,发现这个表里面的数据并没有删除掉。就是因为我们创建的这个触发器,在该表数据删除的时候,就触发新增数据的语句。我们可以利用触发器,来监控表格数据的变化,记录相关的日志。

为NewTest 表创建一个触发器,一旦新增数据,我们就将该数据记录到相关的日志表中:



执行新增语句“INSERT [dbo].[NewTest] ( [Name], [Age], [Gender], [amount]) VALUES ( N'小黄', 18, N'm', 20)”,我们会在“NewTest_log”表中发现也产生了一条记录,可以记录操作时间,操作类型,还有登陆人等等。

那么我们怎么在触发器里面判断,数据是进行了删除,修改,新增操作呐。还是得看两个临时表“inserted”和“deleted”

新增操作:在inserted 表中有数据,deleted 表中无数据。
删除操作:在inserted 表中无数据,deleted 表中有数据。
修改操作:在inserted 表中有数据(新数据),deleted 表中有数据(旧数据)。

我们可以利用这两个临时表中的数据,去判断相应的操作,再去执行我们相应的业务操作




尾声

小可爱们,数据库基础告一段落了,下篇将会记录一下,数据误删除,误修改之后,在无备份的情况下,怎么恢复。














上一篇:用句柄自动输入无法点击确定操作
下一篇:Java电子书籍和面试题等200本
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-3-24 21:33:05 | 显示全部楼层
路过@@@@@@@@@@@@@@@@@@@
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 03:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表