Hvordan får jeg dato og række-id?
Hvis det antages, at disse er kolonner i din ORDER-tabel kaldet DELIVERY_DATE og ID, skulle din trigger se nogenlunde sådan ud:
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;
Bemærk FOR EACH ROW-sætningen:det er nødvendigt for at referere til værdier fra individuelle rækker. Jeg har brugt en IF-konstruktion til at teste, om jeg skal udføre OPDATERING ved levering. Hvis du ikke har anden logik i din trigger, kan du skrive det sådan her...
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;
Jeg har besvaret det spørgsmål, du stillede, men som en sidebemærkning vil jeg påpege, at din datamodel er suboptimal. Et korrekt normaliseret design ville kun holde DELIVERY_DATE på én tabel:DELIVERY virker som det logiske sted for det.