Hur får jag datum och rad-id?
Om vi antar att dessa är kolumner i din ORDER-tabell som heter DELIVERY_DATE och ID bör din utlösare se ut ungefär så här:
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;
Observera FOR EACH ROW-satsen:som är nödvändig för att referera till värden från enskilda rader. Jag har använt en IF-konstruktion för att testa om UPPDATERING ska utföras vid leverans. Om du inte har någon annan logik i din trigger kan du skriva det så här...
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;
Jag har svarat på frågan du ställde, men som en avslutning vill jag påpeka att din datamodell är suboptimal. En korrekt normaliserad design skulle hålla DELIVERY_DATE på endast ett bord:DELIVERY verkar vara den logiska platsen för det.