修改列值Oracle

修改列值Oracle,oracle,plsql,triggers,Oracle,Plsql,Triggers,你好,我做了一个触发器,它编译 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

你好,我做了一个触发器,它编译

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;
    /
我使用过这个更新请求,但不确定是否必须使用INSERT INTO或update,即使在阅读了许多手册之后,是否正确地使用了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)
编辑:我通过在触发器中添加“where:NEW.numero_command=command.numero_command;”解决了这个问题。
谢谢

在表
命令
中的列
数字命令
上没有空约束

有关此约束的更多信息,请参见:

默认情况下,表列可以包含空值

SQL非空约束

NOTNULL约束将列强制为 不接受空值

NOTNULL约束强制字段始终包含值。 这意味着您无法插入新记录或更新记录 不向该字段添加值

在触发器中为此字段提供一个值:

INSERT INTO Commande (etat,NUMERO_COMMANDE) 
VALUES ('livree', some-value-for-numero-commande-column);

或者从表中删除此列上的NOTNULL约束。

显示表命令的结构,因为这就是问题所在。
INSERT INTO Commande (etat,NUMERO_COMMANDE) 
VALUES ('livree', some-value-for-numero-commande-column);