这是所需的代码。
我编辑了内容。
CREATE OR REPLACE TRIGGER horaire_heure
BEFORE INSERT OR UPDATE ON Horaire
FOR EACH ROW
BEGIN
:NEW.heure_debut := to_char(:NEW.heure_debut,'hh24:mi:ss');
:NEW.heure_fin := to_char(:NEW.heure_fin,'hh24:mi:ss');
END;
/
输入
INSERT INTO Horaire
VALUES (1,2,TO_DATE('02/01/2000 13:30:00','DD/MM/YYYY HH24:MI:SS'),TO_DATE('02/01/2000 16:30:00','DD/MM/YYYY HH24:MI:SS'),NULL);
现在弹出ORA-01843。告诉我这个月是无效的。
怎么了?
答案 0 :(得分:0)
在您的插入语句中,您将'2000/01/02 13:30:00'转换为日期格式,并在触发器中使用to_Date转换日期值! 然后从'2000/01/02 13:30:00'获得时间部分,由于2日期转换,您的时间将是'00:00:00'!
另一方面,我认为heure_debut字段的类型是DATE。并且您希望在触发器中将其更改为varchar。
我认为您必须更改to_char和to_date的位置以插入时间而不是日期和时间。