आप कुछ इस तरह चाहते हैं:
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;
हालांकि, यह उस तालिका को अपडेट कर रहा है जिस पर ट्रिगर निगरानी कर रहा है और ऐसा लगता है कि ट्रिगर अपडेट का कारण बनेगा जो ट्रिगर को फिर से लागू करेगा और एक परिवर्तनशील तालिका त्रुटि प्राप्त करेगा।
आप अपने व्यावसायिक तर्क को एक संग्रहीत प्रक्रिया में लपेटना बेहतर हो सकता है जहां यह पिछली पंक्तियों पर अद्यतन कर सकता है और फिर सम्मिलित/अद्यतन कर सकता है। फिर, सीधे टेबल पर डीएमएल स्टेटमेंट करने के बजाय संग्रहीत प्रक्रिया को लागू करें।