Je wilt zoiets als dit:
CREATE OR REPLACE TRIGGER TRIGGER_D
BEFORE
INSERT OR UPDATE ON CONTRACTS
FOR EACH ROW
DECLARE
BEGIN
UPDATE CONTRACTS
SET ENDDATE = :NEW.STARTDATE - INTERVAL '1' DAY
WHERE CLIENTID = :NEW.CLIENTID
AND ENDDATE > :NEW.STARTDATE
AND STARTDATE < :NEW.STARTDATE;
END;
Het werkt echter de tabel bij die de trigger controleert en het lijkt waarschijnlijk dat de trigger updates zal veroorzaken die de trigger opnieuw zullen aanroepen en een muterende tabelfout zullen krijgen.
Het is misschien beter om uw bedrijfslogica in een opgeslagen procedure te plaatsen waar deze de update op de vorige rijen kan uitvoeren en vervolgens de invoeging/update kan uitvoeren. Roep dan, in plaats van DML-instructies direct op de tafel uit te voeren, de opgeslagen procedure aan.