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

 代码如下 复制代码

--宣告两个变量
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'删除')

时间: 2024-12-07 09:35:23

mssql server 判断触发器正在处理的是插入,删除还是更新触发的相关文章

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

但是有时候,可以视看处进逻辑程度,可以把三者写成一个触发器,只是在其中稍作判断而已. 你可以根据从下面方法判断触发器是是处理了插入,删除还是更新触发的: 复制代码 代码如下: --宣告两个变量 DECLARE @D BIT = 0 DECLARE @I BIT = 0 --如果在DELETED内部临时触发表找到记录,说明旧数据被删除 IF EXISTS(SELECT TOP 1 1 FROM DELETED) SET @D = 1 --如果在INSERTED内部临时触发表找到记录,说明有新数据插

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

但是有时候,可以视看处进逻辑程度,可以把三者写成一个触发器,只是在其中稍作判断而已. 你可以根据从下面方法判断触发器是是处理了插入,删除还是更新触发的: 复制代码 代码如下: --宣告两个变量 DECLARE @D BIT = 0 DECLARE @I BIT = 0 --如果在DELETED内部临时触发表找到记录,说明旧数据被删除 IF EXISTS(SELECT TOP 1 1 FROM DELETED) SET @D = 1 --如果在INSERTED内部临时触发表找到记录,说明有新数据插

SQL Server数据库触发器安全隐患解析

  触发器权限和所有权 CREATE TRIGGER 权限默认授予定义触发器的表所有者.sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让. 需要的环境 本文需要的环境是已经获取了sql服务器的以上其中一个权限,目的是为了留下隐蔽的后门,不被管理员发现.即使发现了也是加密的(可以破解,不过有些管理员不懂,也不会注意,相关信息google下). 触发器是在对表进行插入(insert).更新(update)或删除(delete)操

对MSsql Server的view使用instead of trigger进行视图更新

server|视图        最近常常使用VIEW,但MSsql Server不允许对关联两个基表以上的VIEW进行更新操作.由于项目上的需要,花了一个晚上的时间研究了一下.抽点时间把过程和心得记录下来.        先看看权威说法:   可更新视图: Microsoft SQL Server 2000 以两种方法增强可更新视图的类别:   INSTEAD OF 触发器:可以在视图上创建 INSTEAD OF 触发器,以使视图可更新.执行 INSTEAD OF 触发器,而不是执行定义触发器

mssql server 常用日期函数

mssql server 常用日期函数 你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年. 月.日等),然后仅仅用分割出来的年.月.日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和 DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期. 在使用本文中的例子之前,你 必须注意以下的问题.大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定.第一天 (

SQL Server 使用触发器(trigger)发送电子邮件步骤详解

sql 使用系统存储过程 sp_send_dbmail 发送电子邮件语法: sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...n ]' ] [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ] [ , [ @blind_copy_recipients = ] 'blind_copy_recipien

MSSQL SERVER 2005 数学函数整理

MSSQL SERVER 2005 数学函数 1.求绝对值 ABS() select FWeight-50,ABS(FWeight-50),ABS(-5.38) from T_Person 2.求幂 POWER(X,Y) 用来计算X的Y次幂 select FWeight,POWER(FWeight,-0.5),POWER(FWeight,2), POWER(FWeight,3),POWER(FWeight,4) from T_Person select Power(2,2) 3.求平方根 SQR

关于MSSQL SERVER 2005中数据乱码的问题

今天新装了MSSQL SERVER 2005 感觉界面比以前更友好 在想.NET 的界面过度 安装完毕 新建一数据库 插入条记录 发现回显的全部都是 ?????.... 乱码.... 仔细查看了半天 发现数据库的排序规则是德语... 修改方法:数据库属性->选项->排序规则 设置成 CHINESE_PRC_CI_AI 就可以了

如何建立一个安全的MSSQL SERVER的启动账号?

server|安全         SQL SERVER的安全问题一直是困扰DBA的一个难题,作为开发者和用户希望自己的权限越大越好,最好是SA,而作为DBA希望所有的用户权限越小越好,这总是一对矛盾.一般来说,我们会考虑采用WINDOWS验证模式,建立安全的用户权限,改变SQL SERVER TCP/IP的默认端口...等安全措施,但很多DBA还是忽略了MSSQL SERVER服务的启动账号,这也是一个非常值得重点关注的问题.特别是MSSQL SERVER提供了许多操作系统和注册表扩展存储过程