SQL Oracle 中的触发器错误

Trigger Error in SQL Oracle

我有一个名为 'test' 的 table,其中有 2 列:SKTEST 和 test2

我想在 table 上每次插入时增加 SKTEST 列,所以我创建了一个序列和一个触发器。

但是我的触发语句遇到了错误:

CREATE OR REPLACE TRIGGER INCRSK
BEFORE INSERT ON schema.test
FOR EACH ROW
BEGIN 
     :new.SKTEST := SK_SEQUENCES.NEXTVAL
END
/

当我想在 table 测试的列 test2 中插入值时:

INSERT ALL
INTO schema.test (test2) values ('10')
INTO schema.test (test2) values ('20')
INTO schema.test (test2) values ('30')
SELECT * FROM dual;

我收到以下错误:

ORA-04098 : trigger 'User.INCRSK' is invalid and failed re-validation

所以我用下面这句话检查了错误:

SELECT * FROM user_errors WHERE type = 'TRIGGER' AND name = 'INCRSK'

它显示了这个:

PLS-00103 : encountered the symbol "END" when expecting one of the following : . ( * / etc

编辑

多亏了@Maxim Borunov,它才有效!

在你的触发器 ddl 中有两个 ';'缺少符号:

CREATE OR REPLACE TRIGGER INCRSK
BEFORE INSERT ON schema.test
FOR EACH ROW
BEGIN 
     :new.SKTEST := SK_SEQUENCES.NEXTVAL;
END;
/