有人可以解释一下这是什么意思吗?
:new并:old在触发代码中。
:new
:old
: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'