Comment puis-je obtenir la date et l'identifiant de la ligne ?
En supposant qu'il s'agisse de colonnes de votre table ORDER appelées DELIVERY_DATE et ID, votre déclencheur devrait ressembler à ceci :
CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE ON Order
FOR EACH ROW
BEGIN
if :new.delivery_date != :old.delivery_date
then
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
end if;
END;
Notez la clause FOR EACH ROW :qui est nécessaire pour référencer les valeurs des lignes individuelles. J'ai utilisé une construction IF pour tester s'il faut exécuter la mise à jour à la livraison. Si vous n'avez pas d'autre logique dans votre déclencheur, vous pouvez l'écrire comme ceci...
CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE OF delivery_date ON Order
FOR EACH ROW
BEGIN
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
END;
J'ai répondu à la question que vous avez posée mais, en aparté, je soulignerai que votre modèle de données est sous-optimal. Une conception correctement normalisée contiendrait DELIVERY_DATE sur une seule table : DELIVERY semble l'endroit logique pour cela.