Sql触发器“列列表对于此触发器类型无效”

noc*_*rne 2 sql triggers oracle12c

所以我想创建触发器:

CREATE TRIGGER add_primary_key
AFTER INSERT ON CAJ
FOR EACH ROW
WHEN (ID_CAJ IS NULL)
DECLARE
maximum NUMBER;
BEGIN
  maximum := SELECT MAX(ID_CAJ) FROM caj;
  if (maximum <> 0)
    UPDATE caj
    SET ID_CAJ = maximum + 1;
    WHERE CAJ_ID = NULL
    maximum = maximum +1;
END;
Run Code Online (Sandbox Code Playgroud)

出现此错误:

"invalid NEW or OLD specification"
*Cause:    An invalid NEW or OLD specification was given for a column.
*Action:   Re-specify the column using the correct NEW or OLD specification.
Run Code Online (Sandbox Code Playgroud)

你们有什么想法吗?

Ser*_*erg 6

我想是甲骨文。这是不正确的:

AFTER INSERT OF ID_CAJ
IN caj
Run Code Online (Sandbox Code Playgroud)

INSERT 插入行[s]。列列表在这里不相关。它应该是 ON 表名

AFTER INSERT ON CAJ
Run Code Online (Sandbox Code Playgroud)

如果您想要在插入的行具有NULL值时设置新主键的触发器,请参阅此主题以了解在 oracle 中使用create table with sequence.nextval执行此操作的 Oracle 常用方法SEQUENCE