sql - 在 Oracle PL/SQL 中创建触发器时,如何解决“编译错误成功”错误?
问题描述
我正在尝试创建一个更新“事件”表而不是更新“v_event”视图的触发器。
CREATE OR REPLACE TRIGGER t_update_event
INSTEAD OF UPDATE ON v_event
BEGIN
UPDATE Event
SET start_date = :NEW.start_date,
end_date = :NEW.end_date,
start_time = :NEW.start_time,
end_time = :NEW.end_time,
description = :NEW.description,
WHERE event_id = :OLD.event_id
END
当我运行此脚本时,出现“编译错误成功”错误。
我究竟做错了什么?
解决方案
注意你在做什么。
CREATE OR REPLACE TRIGGER t_update_event
INSTEAD OF UPDATE ON v_event
BEGIN
UPDATE Event
SET start_date = :NEW.start_date,
end_date = :NEW.end_date,
start_time = :NEW.start_time,
end_time = :NEW.end_time,
description = :NEW.description, --> superfluous comma
WHERE event_id = :OLD.event_id --> missing semi-colon
END --> missing semi-colon
为了找出问题所在,要么
SQL> show err
看到错误后立即(如果您的工具支持;SQL*Plus 支持),或查询user_errors
:
select * from user_errors where name = 'T_UPDATE_EVENT';
固定,它看起来像这样:
SQL> create or replace trigger t_update_event
2 instead of update on v_event
3 begin
4 update event set
5 start_date = :new.start_date,
6 end_date = :new.end_date,
7 start_time = :new.start_time,
8 end_time = :new.end_time,
9 description = :new.description
10 where event_id = :old.event_id;
11 end;
12 /
Trigger created.
SQL>
推荐阅读
- mysql - MySQL:复合索引与多个索引(最左边的索引前缀)
- c - C中函数调用约定的历史
- java - 没有为 MultipartFile 配置 Spring Boot 2.0.2 MultipartConfigElement
- javascript - 在 HTML 中将变量从 JavaScript 转换为 PHP?
- django - Django:无法在模板中显示来自抽象模型的数据
- java - 禁用时如何使 JCheckBox L&F 保持启用状态(true)?
- shell - 如何在没有 eval 的情况下将包括引号在内的参数字符串传递给命令
- c++ - VSCode C++ 调试捕获控制台输出
- c++ - OpenGL 如何区分 VAO 中的绑定点和使用 glBindBufferBase 定义的绑定点?
- objective-c - 如何调用没有来自 Swift 的参数的 Objective-C `initFoo` 方法?