2016-04-14 7 views
0

Здравствуйте, я сделал Trigger компилируетИзменить значение столбца Oracle

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) 

EDIT: Я решил, добавив "где: NEW.numero_commande = Commande.numero_commande;" к моему спусковому механизму. СООБЩЕНИЕ

+1

Покажите нам структуру таблицы COMMANDE, потому что это проблема. –

ответ

0

В столбце NUMERO_COMMANDE НЕ указано ограничение NULL в таблице COMMANDE.

Подробнее об этом ограничении вы можете найти здесь: http://www.w3schools.com/sql/sql_notnull.asp

По умолчанию столбец таблицы может содержать NULL значения.

SQL NOT NULL Ограничение

NOT NULL ограничение обеспечивает столбец NOT NULL принимает значения.

Ограничение NOT NULL обеспечивает обязательное поле, содержащее значение. Это означает, что вы не можете вставить новую запись или обновить запись без добавления значения в это поле.

Либо обеспечить значение для этого поля в вашем триггере:

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

или удалить NOT NULL ограничение на этой колонке из таблицы.

Смежные вопросы