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
. हैं ... लेकिन संभवतः आप वास्तव में ट्रिगर के साथ कुछ और दिलचस्प कर रहे होंगे।