SQL--触发器中的 inserted,deleted 表

SQL–触发器中的 inserted,deleted 表

1.在触发器中有两个临时表,一个叫 inserted ,一个叫deleted
2.当执行insert操作时,在inserted中存储着当前插入的记录,
3.在执行delete操作时,在deleted中存储着当前删除的记录,
4.当执行update时,在inserted中存储着修改后的记录,在deleted中存储着修改前的记录。
5.没有updated这个临时表
6.触发器结束后, inserted,deleted 表会被自动删除

------实现目标:当改名字时,把原来的名存在OldName里


CREATE TRIGGER Trigger_Name ON dbo.t_TEST FOR UPDATE
----创建了一个触发器,名字叫Trigger_Name,在 dbo.t_TEST 表上;执行update 操作时触发
AS
BEGIN
 --SELECT * FROM Inserted 只有新增和修改时有数据
 --SELECT * FROM Deleted 只有修改和删除的时候有数据
    IF(UPDATE(TestName))
    ---------如果 update 的是 这个dbo.t_TEST 表里的 TestName 字段,那么开始执行下面的语句
    BEGIN
        UPDATE T1
        SET T1.OldName=T2.TestName
        FROM dbo.t_TEST T1
        INNER JOIN Deleted T2 ON T1.ID=T2.ID
        WHERE T1.TestName<>T2.TestName
        ----更新 t1 表,把 t2 表的 TestName字段上存的值, 放在 t1 表的 NewName 字段上
        ----更新的数据范围是 t1、t2的 TestName 不一样了
    END
END
------结束
GO

-注解: 为什么要用 deleted 表呢 ,

因为我们 只需要把原来的 TestName 记住即可,而deleted表是专门存旧值的 ,所以我们用了 deleted 表

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值