【发布时间】:2010-01-26 21:35:06
【问题描述】:
我正在尝试使用 ORACLE SQL DEVELOPER 在 ORACLE 中创建触发器,我将检查作为开始日期预订到预订日期或服务费日期输入的日期是否等于或大于插入的当前日期在记录中。
这些是我表中的字段
Service (date_service, cost_variation, number_room, id_service);
这是我的代码:
CREATE OR REPLACE TRIGGER VERIFY_DATE
BEFORE INSERT OR UPDATE OF FECHA_PLAN ON SERVICE
FOR EACH ROW
DECLARE
fecha_ac DATE;
BEGIN
SELECT SYSDATE INTO fecha_ac FROM DUAL;
IF(:NEW.FECHA_PLAN > fecha_ac)THEN
dbms_output.put_line('The date of the plan should be more than the current date ');
raise_application_error(-20601, 'Dato invalido');
END IF;
END;
这是我在尝试运行 TRIGGER 时遇到的错误
INSERT INTO "MIGRARBD"."SERVICE"
(date_service, cost_variation, number_room, id_service)
VALUES
(TO_DATE('20/01/10', 'DD/MM/RR'), '2', '1', '1')
保存对“MIGRARBD”表的更改时出错。“SERVICE”:
Fila 1: ORA-20601: Dato invalido
ORA-06512: en "MIGRARBD.VERIFICAR_FECHA", línea 7
ORA-04088: error during execution of trigger 'MIGRARBD.VERIFICAR_FECHA'
ORA-06512: on line 1
希望你能帮忙……请原谅我的英语
【问题讨论】:
-
调试消息“计划的日期应该早于当前日期”与您的触发器的逻辑相矛盾,如果日期晚于(“超过”),则触发器的逻辑会以 ORA-20601 停止当前日期。
-
你的英语比许多人认为把它作为第一语言的人要好。不需要道歉。
-
dbms_output.put_line 消息的目的是什么?没有人会看到该消息(除了您在 SQL Plus、Toad 等中测试触发器时)
标签: sql oracle triggers ora-04088