Jus*_*ave 26
:new并且:old是伪记录,允许您访问特定列的新旧值.如果我有一张桌子
CREATE TABLE foo (
foo_id NUMBER PRIMARY KEY,
bar VARCHAR2(10),
baz VARCHAR2(10)
);
Run Code Online (Sandbox Code Playgroud)
我插入一行
INSERT INTO foo( foo_id, bar, baz )
VALUES( 1, 'Bar 1', 'Baz 1' );
Run Code Online (Sandbox Code Playgroud)
然后在插入触发器之前的行级别
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 1'
Run Code Online (Sandbox Code Playgroud)
而
:old.foo_id will be NULL
:old.bar will be NULL
:old.baz will be NULL
Run Code Online (Sandbox Code Playgroud)
如果您然后更新该行
UPDATE foo
SET baz = 'Baz 2'
WHERE foo_id = 1
Run Code Online (Sandbox Code Playgroud)
然后在更新前的行级触发器中
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 2'
Run Code Online (Sandbox Code Playgroud)
而
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 1'
Run Code Online (Sandbox Code Playgroud)
如果我然后删除该行
DELETE FROM foo
WHERE foo_id = 1
Run Code Online (Sandbox Code Playgroud)
然后在删除行级触发器之前,
:new.foo_id will be NULL
:new.bar will be NULL
:new.baz will be NULL
Run Code Online (Sandbox Code Playgroud)
而
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 2'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30280 次 |
| 最近记录: |