加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 新旧触发器代码

发布时间:2020-12-12 07:44:48 所属栏目:MsSql教程 来源:网络整理
导读:有人可以解释一下是什么意思: :new和:old in trigger code. 解决方法 :new和:old是伪记录,允许您访问特定列的新旧值.如果我有一张桌子 CREATE TABLE foo ( foo_id NUMBER PRIMARY KEY,bar VARCHAR2(10),baz VARCHAR2(10)); 我插入一行 INSERT INTO foo(
有人可以解释一下是什么意思:

:new和:old in trigger code.

解决方法

:new和:old是伪记录,允许您访问特定列的新旧值.如果我有一张桌子
CREATE TABLE foo (
  foo_id NUMBER PRIMARY KEY,bar    VARCHAR2(10),baz    VARCHAR2(10)
);

我插入一行

INSERT INTO foo( foo_id,bar,baz ) 
  VALUES( 1,'Bar 1','Baz 1' );

然后在插入触发器之前的行级别

:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 1'

:old.foo_id will be NULL
:old.bar will be NULL
:old.baz will be NULL

如果您然后更新该行

UPDATE foo
   SET baz = 'Baz 2'
 WHERE foo_id = 1

然后在更新前的行级触发器中

:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 2'

:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 1'

如果我然后删除该行

DELETE FROM foo
 WHERE foo_id = 1

然后在删除行级触发器之前,

:new.foo_id will be NULL
:new.bar will be NULL
:new.baz will be NULL

:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 2'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读