Du vill ha något sånt här:
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;
Det är dock en uppdatering av tabellen som utlösaren övervakar och det verkar troligt att utlösaren kommer att orsaka uppdateringar som kommer att anropa utlösaren igen och få ett muterande tabellfel.
Det kan vara bättre att linda in din affärslogik i en lagrad procedur där den kan utföra uppdateringen på de föregående raderna och sedan göra infogningen/uppdateringen. Anropa sedan den lagrade proceduren istället för att utföra DML-satser direkt på bordet.