触发新旧列

use*_*276 0 sql oracle triggers plsql oracle10g

为什么我们不能在语句级触发器中使用:new和:old列?

Pab*_*ruz 6

因为可能是语句插入/删除/更新多行.所以没有新的旧的专栏.

例:

update FOO set a = 12 where b = 9;
Run Code Online (Sandbox Code Playgroud)

要么:

delete from FOO where b = 9;
Run Code Online (Sandbox Code Playgroud)

要么:

insert into FOO (a, b) select 12, x from BAR;
Run Code Online (Sandbox Code Playgroud)

如果FOO表有一个语句触发器,则在这三个句子中无法判断您是在无行,单行还是多行操作.