2013-06-06 7 views
16

में एक ट्रिगर बनाने में समस्याएं SQL डेवलपर का उपयोग करके मेरे ओरेकल 11 जी डेटाबेस में ट्रिगर बनाने का प्रयास करते समय मुझे एक अजीब त्रुटि मिलती है। यहाँ मैं क्या किया है:ओरेकल 11 जी

मेरे तालिका:

CREATE TABLE COUNTRY_CODE(
    ID NUMBER(19,0)  PRIMARY KEY NOT NULL, 
    Code    VARCHAR2(2) NOT NULL, 
    Description VARCHAR2(50), 
    created     TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    created_by     VARCHAR2(40) DEFAULT USER, 
    last_updated     TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    last_updated_by   VARCHAR2(40) DEFAULT USER, 
    archived CHAR(1) DEFAULT '0' NOT NULL); 

अनुक्रम:

CREATE SEQUENCE COUNTRY_CODE_ID_SEQ START WITH 1 INCREMENT BY 1; 

ट्रिगर:

CREATE OR REPLACE TRIGGER COUNTRY_CODE_TRIGGER 
BEFORE INSERT ON COUNTRY_CODE 
FOR EACH ROW 
DECLARE 
    max_id number; 
    cur_seq number; 
BEGIN 
    IF :new.id IS NULL THEN 
    SELECT COUNTRY_CODE_ID_SEQ.nextval 
    INTO :new.id 
    FROM dual; 
ELSE 
    SELECT GREATEST(NVL(MAX(id),0), :new.id) 
    INTO max_id 
    FROM COUNTRY_CODE; 

    SELECT COUNTRY_CODE_ID_SEQ.nextval 
    INTO cur_seq 
    FROM dual; 

    WHILE cur_seq < max_id 
    LOOP 
     SELECT COUNTRY_CODE_ID_SEQ.nextval 
     INTO cur_seq 
     FROM dual; 
    END LOOP; 
END IF; 
END; 

तालिका बनाना और अनुक्रम बहुत अच्छी तरह से काम करता है, लेकिन जब मैं अपना ट्रिगर बनाने की कोशिश करता हूं, तो मुझे यह त्रुटि मिलती है:

Error report: 
ORA-00603: ORACLE server session terminated by fatal error 
ORA-00600: internal error code, arguments: [kqlidchg0], [], [], [], [], [], [], [], [], [], [], [] 
ORA-00604: error occurred at recursive SQL level 1 
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated 
00603. 00000 - "ORACLE server session terminated by fatal error" 
*Cause: An ORACLE server session is in an unrecoverable state. 
*Action: Login to ORACLE again so a new server session will be created 

क्या कोई इस त्रुटि के बारे में जानता है?

धन्यवाद

+0

एक बार जब आप PLScope इस मुद्दे को ठीक, आप एक परिवर्तनशील पाने के लिए जा रहे हैं ट्रिगर अपवाद। 'COUNTRY_CODE' पर एक पंक्ति-स्तरीय ट्रिगर को 'COUNTRY_CODE' तालिका से पूछने की अनुमति नहीं है।हालांकि, अतिरिक्त कथन-स्तरीय ट्रिगर के साथ इस समस्या को हल करना संभव है, ऐसा लगता है कि अनुक्रम को रीसेट करने की आवश्यकता होने पर आपको हर बार एक पंक्ति डालने की आवश्यकता होती है। ऐसा लगता है कि आप शायद उन दुर्लभ मौकों पर अनुक्रम को एक बड़े मूल्य पर सेट करना चाहते हैं जो कुछ इस त्रुटि की स्थिति को उत्पन्न करने का कारण बनता है। –

उत्तर

39

के लिए एक समाधान हो सकता है:

ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE'; 

या Oracle SQL डेवलपर में:

इस जोड़ें:

  1. उपकरण पर जाएं | प्राथमिकता
  2. डाटाबेस का चयन करें | PL/SQL संकलक
  3. बदलें कोई नहीं करने के लिए सभी से PLScope पहचानकर्ता
  4. ठीक

यह समस्या ठीक होती है पर क्लिक करें ...

+0

यह मेरी समस्या को ठीक करता है। लेकिन ऐसा क्यों हुआ? वास्तव में समस्या क्या थी? – Dariusz

3

वहाँ मैं अंत में मेरी समस्या का जवाब मिल गया इस here.

+0

धन्यवाद टोनी, मैं इसकी सराहना करता हूं! –

+0

@ टोनी एंड्रयूज केवल हाइपरलिंक के साथ उत्तर से बचने का प्रयास करें। अगर लिंक टूटा हो जाता है, तो यह जवाब बेकार हो जाता है। आप जो भी सीखा है उसका सारांश पोस्ट करने के लिए आप अपने उत्तर को संशोधित करना चाहते हैं, और उसके बाद लिंक का संदर्भ लें। – vapcguy

+0

@vapcguy प्वाइंट लिया गया, हालांकि यह उत्तर 3 साल पुराना है और स्वीकार्य उत्तर नहीं है, शायद मैं नहीं करूँगा! –

2

मैं कोई अन्य समाधान है (और की जरूरत नहीं है केवल टिप्पणी करने के लिए प्रतिष्ठा), लेकिन यहां कुछ जानकारी है जो पीएल/स्कोप का उपयोग करते हुए इस समस्या को हल करने के लिए किसी को सही रास्ते पर लाने में मदद कर सकती है।

मुझे अभी भी एक ही समस्या थी, और पीएल/स्कोप फीचर में देखकर मुझे यह समझने में मदद मिली कि समस्या कहां आ सकती है। मेरे मुद्दे के लिए, मैंने एक ट्रिगर बनाने की कोशिश की और एक ही सटीक त्रुटि आई। मैंने ट्रिगर के शरीर को कोई फायदा नहीं हुआ, लेकिन नाम बदलकर ठीक काम किया।

ऐसा लगता है कि पीएल/स्कोप इसे छोड़ने से पहले, पहले तत्काल ट्रिगर के बारे में जानकारी पर था। ट्रिगर्स पर एक प्रश्न से पता चला कि मेरा ट्रिगर निश्चित रूप से गिरा दिया गया था, लेकिन (पीएल/स्कोप) पहचानकर्ताओं ("all_identifiers") पर एक प्रश्न से पता चला कि यह अभी भी वहां था।

पी एल/स्कोप पर कुछ जानकारी यहाँ है: http://www.oracle.com/technetwork/testcontent/o67asktom-101004.html

अध्याय 8 यहाँ (11g प्रलेखन) में अधिक जानकारी है: http://docs.oracle.com/cd/B28359_01/appdev.111/b28424.pdf

संबंधित मुद्दे