oracle - SQL Oracle 中的触发错误
问题描述
我有一个名为“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 表中的列 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: 触发器 'User.INCRSK' 无效并且重新验证失败
所以我用以下句子检查了错误:
SELECT * FROM user_errors WHERE type = 'TRIGGER' AND name = 'INCRSK'
它表明了这一点:
PLS-00103:在预期以下情况之一时遇到符号“END”:。( * / ETC
编辑
感谢@Maxim Borunov 它有效!
解决方案
在你的触发器中 ddl 两个';' 缺少符号:
CREATE OR REPLACE TRIGGER INCRSK
BEFORE INSERT ON schema.test
FOR EACH ROW
BEGIN
:new.SKTEST := SK_SEQUENCES.NEXTVAL;
END;
/
推荐阅读
- reactjs - 在反应中触发 NavLink 上的焦点()
- python - 使用 dataframe.at 时浮点数被舍入,而不是 dataframe.iloc
- javascript - setInterval 和 setTimeout 中的间隔不准确
- asciidoc - 如何为现有的 Asciidoctor Asciidoc 宏创建自定义 HTML 输出?
- java - 来自 SQL 数据库的带有时间的 JFreechart 图表
- node.js - 尝试在 Node.js 上运行项目时出错
- javascript - 用于解码 PDF 流的 JavaScript 库
- python - 如何在python中增加样本日期
- amazon-web-services - Azure Devops 服务和 VPN - 加密数据
- android-espresso - 如何从 Espresso DataInteraction 获取列表大小