• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 判断触发器正在处理的是插入,删除还是更新触发

判断触发器正在处理的是插入,删除还是更新触发

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了触发器等相关知识,希望本文的分享对您有所帮助

平常时写触发器(TRIGGER),一般会分别写插入(INSERT),删除(DELETE)和更新(UPDATE)单独的触发器

但是有时候,可以视看处进逻辑程度,可以把三者写成一个触发器,只是在其中稍作判断而已。

你可以根据从下面方法判断触发器是是处理了插入,删除还是更新触发的:

代码如下:
--宣告两个变量
DECLARE @D BIT = 0
DECLARE @I BIT = 0

--如果在DELETED内部临时触发表找到记录,说明旧数据被删除
IF EXISTS(SELECT TOP 1 1 FROM DELETED)
SET @D = 1

--如果在INSERTED内部临时触发表找到记录,说明有新数据插入
IF EXISTS(SELECT TOP 1 1 FROM INSERTED)
SET @I = 1

--如果两个表都有记录,说明触发器是执行更新触发
IF @I = 1 AND @D = 1
PRINT(N'更新。')

--如果变量@I值被变更为1,而变量@D没有变更,说明触发器是执行插入触发
IF @I = 1 AND @D = 0
PRINT(N'插入')

--下面判断成立,说明说明触发器是执行删除触发
IF @I = 0 AND @D = 1
PRINT(N'删除')


另外有关两个内部临时触发表,触发器的Inserted表和Deleted表

触发器有两个虚拟表,Inserted表和Deleted表,这两个表在不同操作情况之下,表中的数据状态可不一样。
一、插入操作(INSERT)时:Inserted表有数据,Deleted表无数据。
二、更新操作(UPDATE)时:Inserted表有数据(新数据),Deleted表有数据(旧数据)。
三、删除操作(DELETE)时:Inserted表无数据,Deleted表有数据。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05mysql数据分组:过滤分组
  • 2017-05-11MySQL左联多表查询where条件写法示例
  • 2018-12-05在查询结果中添加一列表示记录的行数的sql语句
  • 2018-12-05 Redis数据类型
  • 2018-12-05mysql + Fluently NHibernate + WebAPI + Autofac
  • 2018-12-05如何向MySQL数据库或者Oracle或导入表格文件
  • 2017-05-11MySQL 自定义函数CREATE FUNCTION示例
  • 2018-12-05MySQL存储过程的优化实例_MySQL
  • 2018-12-05详解MySQL数据库优化
  • 2017-05-11mysql服务1067错误多种解决方案分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL安装详解图文版(V5.5 For Windows)
    • mysql5.7 修改用户初始密码的方法_Mysql
    • mysql 常用的三类函数
    • 详细介绍MySQL5.7 zip版本安装配置图文教程
    • GROUP_CONCAT的用法
    • 基于MySQL数据库复制Master-Slave架构的分析
    • MySql服务器系统变量和状态变量介绍
    • MySQL essential版本和普通版本有什么区别?
    • MS-sql 2005拒绝了对对象 ''xxx'' (数据库 ''xxx'',架
    • PHP学习之SQL语句快速入门

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有