Hoe kom ik aan de datum en rij-ID?
Ervan uitgaande dat dit kolommen zijn in uw ORDER-tabel met de naam DELIVERY_DATE en ID, zou uw trigger er ongeveer zo uit moeten zien:
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;
Let op de FOR EACH ROW-clausule:die is nodig om naar waarden uit afzonderlijke rijen te verwijzen. Ik heb een IF-constructie gebruikt om te testen of de UPDATE on Delivery moet worden uitgevoerd. Als je geen andere logica in je trigger hebt, zou je het zo kunnen schrijven...
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;
Ik heb de door u gestelde vraag beantwoord, maar terzijde wil ik u erop wijzen dat uw datamodel suboptimaal is. Een goed genormaliseerd ontwerp zou DELIVERY_DATE op slechts één tafel bevatten:DELIVERY lijkt de logische plaats ervoor.