首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在sql server Trigger AFTER Update语句中获取上一个值

在SQL Server的Trigger AFTER Update语句中,可以通过使用内置的Inserted和Deleted表来获取上一个值。

Inserted表包含了在更新操作中被插入或更新的新值,而Deleted表包含了在更新操作中被删除或更新前的旧值。通过比较这两个表中的数据,可以获取上一个值。

以下是一个示例的Trigger AFTER Update语句,演示如何获取上一个值:

代码语言:sql
复制
CREATE TRIGGER [dbo].[YourTriggerName]
ON [dbo].[YourTableName]
AFTER UPDATE
AS
BEGIN
    -- 获取上一个值
    DECLARE @OldValue VARCHAR(50)
    SELECT @OldValue = YourColumnName
    FROM Deleted

    -- 获取当前值
    DECLARE @NewValue VARCHAR(50)
    SELECT @NewValue = YourColumnName
    FROM Inserted

    -- 进行比较或其他操作
    IF @OldValue <> @NewValue
    BEGIN
        -- 执行你的逻辑
    END
END

在上面的示例中,YourTriggerName是你给Trigger起的名称,YourTableName是你的表名,YourColumnName是你要获取值的列名。

需要注意的是,Trigger AFTER Update语句中的Inserted和Deleted表是临时表,只在Trigger执行期间存在,并且只包含受影响的行。因此,如果更新操作涉及多行,你需要使用适当的循环或其他方法来处理每一行的旧值和新值。

对于腾讯云的相关产品和产品介绍链接地址,可以参考腾讯云官方文档或咨询腾讯云的技术支持团队,以获取最新的信息和推荐。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL的学习--触发器

:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用...由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATEAFTER DELETE。...;可以同时定义多个同类型的变量,用逗号隔开;变量初始为 NULL,如果需要,可以使用 DEFAULT 子句提供默认可以被指定为一个表达式。...NEW 与 OLD 详解 上述示例中使用了NEW关键字,和 MS SQL Server 中的 INSERTED 和 DELETED 类似,MySQL 中定义了 NEW 和 OLD,用来表示 触发器的所在表中...这时,若SQL语句或触发器执行失败,MySQL 会回滚事务,有: ①如果 BEFORE 触发器执行失败,SQL 无法正确执行。 ②SQL 执行失败时,AFTER 型触发器不会触发。

4.8K20
  • ORACLE触发器具体解释

    REFERENCING 子句说明相关名称,在行触发器的PL/SQL块和WHEN 子句中能够使用相关名称參照当前的新、旧列,默认的相关名称分别为OLD和NEW。...触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。 WHEN 子句说明触发约束条件。...REFERENCING 子句说明相关名称,在行触发器的PL/SQL块和WHEN 子句中能够使用相关名称參照当前的新、旧列,默认的相关名称分别为OLD和NEW。...触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。 WHEN 子句说明触发约束条件。...DDL指的是数据定义语言,CREATE 、ALTER及DROP 等。而数据库系统事件包含数据库server的启动或关闭,用户的登录与退出、数据库服务错误等。

    1.1K30

    【DB笔试面试448】Oracle中有哪几类触发器?

    例如:DML语句(INSERT、UPDATE和DELETE语句对表或视图执行数据处理操作)、DDL语句(CREATE、ALTER、DROP语句等在数据库中创建、修改、删除模式对象)、数据库系统事件(系统启动或退出...创建DML触发器的一般语法如下所示: CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE...l REFERENCING子句说明相关名称,在行级触发器的PL/SQL块和WHEN子句中可以使用相关名称参照当前的新、旧列,默认的相关名称分别为OLD和NEW。...在触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号,但在WHEN子句中则不能加冒号。 l WHEN子句说明触发约束条件。...其中,:NEW表示操作完成后列的,而:OLD表示操作完成前列的,如下表所示: 特性 INSERT UPDATE DELETE :OLD NULL 修改前的 删除前的 :NEW 插入的 修改后的

    2K10

    MySQL触发器

    trigger_name :触发器的名字 trigger_time: 触发器触发的时机,取值为before,after before:表示在激发触发器的语句执行之前执行触发器的执行语句 after:表示在激发触发器的语句执行之后执行触发器的执行语句...事件激发触发器 trigger_stmt:触发器执行的语句 执行语句中不能返回结果集 实例: new.age:获取新插入的字段age的 new.name : 获取新插入的name字段的 -- 创建user...这时,若SQL语句或触发器执行失败,MySQL 会回滚事务,有: 如果 BEFORE 触发器执行失败,SQL 无法正确执行。 SQL 执行失败时,AFTER 型触发器不会触发。...AFTER 类型的触发器执行失败,SQL 会回滚。...; 在 DELETE型触发器中,OLD 用来表示将要或已经被删除的原数据; 使用方式 NEW/OLD.columName : 比如获取更新后的name字段的 new.name 注意 OLD 是只读的,

    5K20

    PLSQL --> DML 触发器

    3.触发器的用途 控制DDL语句的行为,通过更改、创建或重命名对象 控制DML语句的行为,插入、更新和删除 实施参照完整性、复杂业务规则和安全性策略 在修改视图中的数据时控制和重定向DML...块和WHEN 子句中可以使用相关名称参照当前的新,旧列,默认的相关名称分别为OLD和NEW。...触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。 [FOR EACH ROW ] 定义触发器为行级触发器。...4.NEW、OLD 限定符的使用 使用被插入、更新或删除的记录中的列,可以使用NEW和OLD限定符来表示 :old 修饰符访问操作完成前列的 :new 修饰符访问操作完成后列的 限定符 INSERT...tr_emp_sal compile; 7.删除触发器 scott@ORCL> drop trigger tr_emp_sal; 五、更多参考 有关SQL请参考 SQL 基础--> 子查询 SQL

    1.5K30

    MySQL进阶知识(最全)(精美版)

    date_sub(CURDATE(),interval -1 day) 2018-08-31 SELECT date_sub(CURDATE(),interval 1 day) 2018-08-29 获取上一个月...储存过程是⼀组为了完成特定功能的 SQL 语句集,经过编译之后存储在数据库中,在需要时直接调 ⽤。 存储过程就像脚本⾔中函数定义⼀样。 为什么要使⽤存储过程 ?...操作前或后来触发指定的 SQL ⾃动执⾏ 触发器就像是 JavaScript 中的事件⼀样 举例 : 定义⼀个 update 语句 , 在向某个表中执⾏ insert 添加语句时来触发执...AFTER # trigger_event :触发事件,可取值: INSERT 、 UPDATE 或 DELETE 。...在 AFTER DELETE 的触发器中⽆法获取 OLD 虚拟表 在 UPDATE 触发器代码中 可以引⽤⼀个名为OLD 的 虚拟表 访问更新以前的 可以引⽤⼀个名为NEW 的虚拟表

    2.5K21

    利用数据库进行权限维持

    唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。他可以查询其它表,并可以包含复杂的Transact-SQL语句。 ?...修改、删除触发器: alter trigger 触发器名 //修改触发器 drop trigger 触发器名 //删除触发器 创建触发器: create trigger 触发器名 on...表名 after delete /insert /update //可以对delete insert update 等操作设置触发器 as 触发器要执行的操作 三,SQL操作监听 当我们不了解代码是构建...我又多定义了一个参数@Cmd 来接受admin1用户手机号的。判断邮箱是否为cmd@qq.com 如果为true,则通过xp_cmdshell 执行@Cmd 的! ? ? ?...可以看到我们修改后执行了手机号选项里输入的! 六,结束 实战中可能比较鸡肋,但也不可否认这也是一种手法吧!如果你们笑话我,集体送非洲!

    66721

    探索SQL Server元数据(二)

    可以告知你当前SQL Server版本中有什么触发器。 SELECT schema_name(schema_ID)+'....- sys.dm_exec_trigger_stats sys.server_trigger_events sys.server_triggers...,CLR标量函数,CLR表函数,SQL内联表函数,内部表,SQL存储过程,CLR存储过程,计划指南,主键约束,老式规则,复制过滤程序,系统基础表,同义词,序列对象,服务队列,CLR DML 触发器,...SQL函数,表类型,用户自定义表,唯一约束,视图和扩展存储过程等。   ...两种触发器都与事件相关,在DML触发器中,包含INSERT, UPDATE, 和DELETE,然而很多事件都可以与DDL触发器关联,稍后我们将了解。 在数据库中列出触发器 那么怎么获取触发器列表?

    1.6K20
    领券