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;
/
我有一个名为 '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;
/