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

ट्रिगर सेट पंक्ति मान को शून्य पर सेट करें

सबसे पहले आपको तय करना होगा:

  • या तो आप चाहते हैं कि इंसर्ट या अपडेट उस समय विफल हो जाए जब यह अवांछित समय पर किया जा रहा हो
  • या आप इंसर्ट या अपडेट को प्रोसेस करना चाहते हैं, लेकिन फिर कॉलम को शून्य पर सेट करना चाहते हैं।

आपके पास दोनों नहीं हो सकते।

यदि आप कॉलम को NULL पर सेट करना चाहते हैं, तो यह पहले . होना चाहिए INSERT/UPDATE ट्रिगर, इसलिए बदले गए कॉलम तालिका में लिखे जाते हैं। (इन्सर्ट/अद्यतन ट्रिगर के बाद फ़ील्ड को कुछ मान पर सेट करने से कोई प्रभाव नहीं पड़ेगा, क्योंकि वे लिखे नहीं गए हैं।)

फिर SET NEW.STAFFNO = NULL; कोई मान्य PL/SQL नहीं है, जो कि :NEW.STAFFNO := NULL; होना चाहिए इसके बजाय।

CREATE OR REPLACE TRIGGER hi
  BEFORE INSERT OR UPDATE OF class_time ON class
  FOR EACH ROW 
WHEN (new.class_time NOT BETWEEN '09:00' AND '18:00')
BEGIN 
  :new.staffno := null; 
  :new.class_day := null; 
  :new.class_type := null; 
  :new.roomnum := null;
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. OPEN का उपयोग करते समय एक ही बाइंड वैरिएबल को कई बार दोहराना... Oracle PL/SQL में डायनेमिक SQL संरचना के लिए

  2. Oracle में इनर जॉइन के साथ अपडेट कैसे करें

  3. ORACLE में LAG फ़ंक्शन का उपयोग करके पिछले दिनों की गणना अपडेट करें

  4. एनपीएम ओरेकल:बीएलओबी सम्मिलित करना

  5. ADO.NET से Oracle को कॉल करते समय एकाधिक चयन कथनों को बैचें