所以我想创建触发器:
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.你们知道吗?
发布于 2016-05-02 14:34:56
我想是先知吧。这是不正确的:
AFTER INSERT OF ID_CAJ
IN caj插入行。列列表在这里不相关。它应该在表名上
AFTER INSERT ON CAJ如果希望触发器设置新的主键(如果插入行具有NULL值),请参阅本主题,以了解使用SEQUENCE create table with sequence.nextval in oracle进行此操作的常用方法。
发布于 2016-05-02 14:30:02
我认为您不应该指定"OF ID_CAJ“,因为它是在insert触发器之后,它是关于行的,而不是列的
https://stackoverflow.com/questions/36984827
复制相似问题