您好我已经制作了一个它编译的触发器
CREATE OR REPLACE TRIGGER livraisonfinie
BEFORE UPDATE ON Expedition
FOR EACH ROW
DECLARE
BEGIN
IF :NEW.date_livraison <> TO_DATE('3000/01/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss')
THEN
INSERT INTO Commande (etat) VALUES ('livree');
DELETE FROM cmdalivrer CMD WHERE :NEW.numero_commande=CMD.id_cmd WHERE :NEW.numero_commande= Commande.numero_commande;;
END IF ;
END;
/
当我尝试更新探险表的值时,我收到此错误
ORA-01400: cannot insert NULL into ("HAMZA"."COMMANDE"."NUMERO_COMMANDE")
ORA-06512: at "HAMZA.LIVRAISONFINIE", line 10
ORA-04088: error during execution of trigger 'HAMZA.LIVRAISONFINIE'
我已经使用了这个更新请求但不确定我是否必须使用INSERT INTO或UPDATE以及在阅读许多手册之后的相关程度。
这是表
Expedition(Id_Expedition ,#id_chauffeur,#Immatriculation, #Id_Itineraire,Date_Deb_Expedition , Date_Livraison)
Commande (numero_commande,Date_commande,adresse_livraison,id_part,ville_livraison,code_postal_livraison,etat,id_expedition)
编辑:我通过添加&#34来解决它:其中:NEW.numero_commande = Commande.numero_commande;&#34;我的触发器。
谢谢
答案 0 :(得分:0)
表NUMERO_COMMANDE
中的列COMMANDE
上存在NOT NULL约束。
有关此约束的更多信息,请访问:
http://www.w3schools.com/sql/sql_notnull.asp
默认情况下,表列可以包含NULL值。
SQL NOT NULL约束
NOT NULL约束强制执行列 不接受NULL值。NOT NULL约束强制字段始终包含值。 这意味着您无法插入新记录或更新记录 不向此字段添加值。
在触发器中为此字段提供值:
INSERT INTO Commande (etat,NUMERO_COMMANDE)
VALUES ('livree', some-value-for-numero-commande-column);
或从表中删除此列上的NOT NULL约束。