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

अमान्य ट्रिगर त्रुटि

ठीक है, मैं इसे एक उत्तर के रूप में पोस्ट करूंगा क्योंकि टिप्पणियां इतनी अधिक टेक्स्ट की अनुमति नहीं देगी।

आपकी टेबल देखकर कुछ चीजें अभी भी स्पष्ट नहीं हैं। आपका कार्य ADD_PACIENTE_QUARTO एक SELECT लागू करता है कथन जो विधेय बताता है Where PAC = CONT लेकिन PAC PACIENTE में नहीं है का विनिर्देश है, बल्कि स्थानीय चर है जहां आप अपना परिणाम संग्रहीत करते हैं और CONT आपका पैरामीटर है, यह स्पष्ट नहीं है कि आपने वहां क्या प्रयास किया।

अब आपके ट्रिगर में तर्क और क्रियान्वयन में कुछ खामियां हैं।

सबसे पहले, आपके ट्रिगर का नाम PACIENTE_TRIGGER है लेकिन लाइन INSERT OR UPDATE ON TIPO_QUARTO मुझे बताता है कि यह TIPO_QUARTO पर है तालिका, यह वाक्यात्मक रूप से कोई समस्या नहीं है, लेकिन तार्किक रूप से किसी के लिए बट में दर्द हो सकता है जो यह पता लगाने की कोशिश कर रहा है कि ट्रिगर किस तालिका से संबंधित है।

इसके बाद, INSERT OR UPDATE OF TIPO ON TIPO_QUARTO का उपयोग करें निवेशनों की निगरानी करने या परिवर्तनों को अपडेट करने के लिए केवल कॉलम में TIPO का TIPO_QUARTO टेबल।

अब यह लाइन If :new.TIPO_QUARTO = 'UTI' then , यह मानते हुए कि यह ट्रिगर TIPO_QUARTO . से जुड़ा हुआ है तालिका, उस तालिका में TIPO_QUARTO . नामक स्तंभ नहीं है इसे :new.TIPO . में बदलें ।

अगला, PAC VARCHAR . प्रकार का है इसलिए मुझे यह स्पष्ट नहीं है कि आप PAC := PAC - :new.TIPO; में क्या करने का प्रयास कर रहे हैं और PAC := PAC + :new.TIPO; . में दोनों पंक्तियाँ invalid number फेंक देंगी अपवाद के रूप में आप स्ट्रिंग्स को जोड़ या घटा नहीं सकते हैं, हो सकता है कि आपका इरादा एक सब स्ट्रिंग को जोड़ना या प्राप्त करना था।

और अंत में UPDATE TIPO_QUARTO SET TIPO = PAC पर कॉल करें। TIPO_QUARTO . के लिए एक ट्रिगर के अंदर परिणाम mutating table . में होगा अपवाद, आप किसी तालिका को क्वेरी/अपडेट नहीं कर सकते जो DML स्टेटमेंट के बीच में है (इस मामले में INSERT या UPDATE) इसे ठीक करने के लिए आप बस :new.TIPO := PAC असाइन कर सकते हैं। ।

इस विवरण का ध्यान रखें और शायद तब आपकी समस्या नहीं रहेगी।




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

  2. स्ट्रिंग को खोजने के लिए Oracle क्वेरी जिसमें वर्ण नहीं हैं

  3. ORA-29278:SMTP क्षणिक त्रुटि:UTL_MAIL चलाते समय सेवा उपलब्ध नहीं है

  4. पीएल/एसक्यूएल में शून्य सहयोगी सरणी के लिए यह जांच क्यों विफल हो रही है?

  5. दो तालिकाओं का गैर-तुच्छ विलय