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

Oracle ट्रिगर ORA-04098:ट्रिगर अमान्य है और पुन:सत्यापन विफल रहा है

Oracle अमान्य वस्तुओं को पुन:संकलित करने का प्रयास करेगा जैसा कि उन्हें संदर्भित किया गया है। यहां ट्रिगर अमान्य है, और हर बार जब आप एक पंक्ति डालने का प्रयास करते हैं तो यह ट्रिगर को पुन:संकलित करने का प्रयास करेगा, और विफल हो जाएगा, जो ORA-04098 त्रुटि की ओर ले जाता है।

आप select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' यह देखने के लिए कि ट्रिगर वास्तव में कौन सी त्रुटि (त्रुटि) प्राप्त करता है और यह संकलित क्यों नहीं होगा। इस मामले में ऐसा प्रतीत होता है कि आप insert . के अंत में एक अर्धविराम खो रहे हैं पंक्ति:

INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')

तो इसे बनाएं:

CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
  BEGIN
        INSERT INTO Users (userID, firstName, lastName, password)
        VALUES ('how', 'im', 'testing', 'this trigger');
  END;           
/

यदि आप ऐसा करते समय संकलन चेतावनी प्राप्त करते हैं तो आप show errors अगर आप SQL*Plus या SQL डेवलपर में हैं, या user_errors क्वेरी करें फिर से।

बेशक, यह आपके Users . को मानता है टेबल में वे कॉलम नाम होते हैं, और वे सभी varchar2 . हैं ... लेकिन संभवतः आप वास्तव में ट्रिगर के साथ कुछ और दिलचस्प कर रहे होंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अपने Oracle सत्र में दिनांक स्वरूप कैसे बदलें

  2. एसक्यूएल:पार्स कॉमा-सीमांकित स्ट्रिंग और शामिल होने के रूप में उपयोग करें

  3. उपयोगकर्ता के लिए सभी सक्रिय और निष्क्रिय ऑरैकल सत्रों को कैसे समाप्त करें

  4. प्रति उपयोगकर्ता डिफ़ॉल्ट योजना Oracle सेटिंग (एक सत्र में परिवर्तन नहीं)

  5. .पैच_स्टोरेज