Sql 触发器 "column list not valid for this trigger type"

Sql trigger "column list not valid for this trigger type"

所以我想创建触发器:

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;

出现这个错误:

"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.

你们有什么想法吗?

我想你不应该指定 "OF ID_CAJ" 因为它在插入触发器之后并且它是关于行而不是列

我想是 Oracle。这是不正确的:

AFTER INSERT OF ID_CAJ
IN caj

INSERT 插入行 [s]。列列表与此处无关。它应该是 ON table name

AFTER INSERT ON CAJ

并且如果您希望在插入行具有 NULL 值时设置新主键的触发器,请参阅本主题以了解 Oracle 使用 SEQUENCE create table with sequence.nextval in oracle[=15 执行此操作的常用方法=]