【发布时间】:2018-06-22 08:01:39
【问题描述】:
我有一个名为“test”的表,其中有 2 列:SKTEST 和 test2
我想在每次插入表时增加 SKTEST 列,因此我创建了一个序列和一个触发器。
但是我的触发语句遇到了错误:
CREATE OR REPLACE TRIGGER INCRSK
BEFORE INSERT ON schema.test
FOR EACH ROW
BEGIN
:new.SKTEST := SK_SEQUENCES.NEXTVAL
END
/
当我想在我的列 test2 中从表 test 中插入值时:
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 : 触发器 'User.INCRSK' 无效并且重新验证失败
所以我用以下句子检查了错误:
SELECT * FROM user_errors WHERE type = 'TRIGGER' AND name = 'INCRSK'
它显示了这一点:
PLS-00103:在预期以下情况之一时遇到符号“END”:。 ( * / 等等
编辑
感谢@Maxim Borunov 它有效!
【问题讨论】:
-
2 个分号不存在 1) :new.SKTEST := SK_SEQUENCES.NEXTVAL; 2) 结束;
-
哦,好的,谢谢!
标签: oracle plsql database-trigger