在 Oracle PL/SQL 中创建触发器时如何解决 "success with compilation error" 错误?
How can I resolve "success with compilation error" error while creating trigger in Oracle PL/SQL?
我正在尝试创建一个触发器来更新 "event" table 而不是更新 "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
当我 运行 这个脚本时,我得到 "success with compilation error" 错误。
我做错了什么?
做事要注意。
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>
我正在尝试创建一个触发器来更新 "event" table 而不是更新 "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
当我 运行 这个脚本时,我得到 "success with compilation error" 错误。
我做错了什么?
做事要注意。
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>