Jak získám datum a ID řádku?
Za předpokladu, že se jedná o sloupce ve vaší tabulce ORDER s názvem DELIVERY_DATE a ID, by váš spouštěč měl vypadat nějak takto:
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;
Všimněte si klauzule FOR EACH ROW:ta je nezbytná k odkazování na hodnoty z jednotlivých řádků. Použil jsem konstrukci IF k otestování, zda provést UPDATE při doručení. Pokud ve spouštěči nemáte žádnou jinou logiku, můžete to napsat takto...
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;
Odpověděl jsem na otázku, kterou jste položili, ale mimochodem zdůrazním, že váš datový model není optimální. Správně normalizovaný návrh by podržel DELIVERY_DATE pouze na jedné tabulce:DELIVERY se zdá být logickým místem.