有人可以解释一下是什么意思:
: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'