Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल में एक ट्रिगर के साथ तिथि बदलने में समस्या

आप कुछ इस तरह चाहते हैं:

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;

हालांकि, यह उस तालिका को अपडेट कर रहा है जिस पर ट्रिगर निगरानी कर रहा है और ऐसा लगता है कि ट्रिगर अपडेट का कारण बनेगा जो ट्रिगर को फिर से लागू करेगा और एक परिवर्तनशील तालिका त्रुटि प्राप्त करेगा।

आप अपने व्यावसायिक तर्क को एक संग्रहीत प्रक्रिया में लपेटना बेहतर हो सकता है जहां यह पिछली पंक्तियों पर अद्यतन कर सकता है और फिर सम्मिलित/अद्यतन कर सकता है। फिर, सीधे टेबल पर डीएमएल स्टेटमेंट करने के बजाय संग्रहीत प्रक्रिया को लागू करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grafana के लिए Enterprise Manager ऐप का उपयोग करके अपने OEM को Grafana से कनेक्ट करें

  2. दिनांक कॉलम के लिए SQL गणना

  3. Oracle पिवट क्वेरी कॉलम नामों के आसपास उद्धरणों के साथ कॉलम देती है। क्या?

  4. समवर्ती अद्यतन हाइबरनेट में हैंडलिंग

  5. EF और TransactionScope SQL सर्वर और Oracle दोनों के लिए DTC में वृद्धि/फैले हुए बिना?