2012-06-29 10 views
8

मैं एक आईडी के साथ कई नोड्स डालने के लिए निम्न क्वेरी चलाने की कोशिश कर रहा हूं जो स्वत: वृद्धि को तालिका में लोड किया जाता है।अनुक्रम त्रुटि। अनुक्रम संख्या की अनुमति नहीं है

हालांकि मुझे त्रुटि मिलती है, ORA-02287: sequence number not allowed here जब भी मैं इसे चलाता हूं।

INSERT INTO V1144Engine.T_NODES VALUES 
    (
    (SELECT V1144ENGINE.S_PK_NODES.NEXTVAL FROM dual), 
    1, 
    'Chemistry of Life', 
    0,1, 
    SYSDATE, 
    NULL, 
    'CON.3.1', 
    NULL 
); 

मैं

SELECT V1144ENGINE.S_PK_NODES.NEXTVAL from dual 

यह ठीक काम करता है और संख्या है कि मैं चाहता हूँ रिटर्न चल कोशिश की है।

मैं इसके आसपास कैसे हो सकता हूं? मैं ओरेकल 11 जी पर चल रहा हूँ।

यह भी बहुत सराहना की जाएगी यदि क्वेरी अभी भी एक पंक्ति पर चल रही है क्योंकि मैं इसे स्प्रेडशीट में बना रहा हूं और अभी भी ऐसा करने में सक्षम होना चाहता हूं।

उत्तर

22

आंतरिक SELECT होने की कोई आवश्यकता नहीं है। सीधे शब्दों में

INSERT INTO V1144Engine.T_NODES 
    VALUES(V1144ENGINE.S_PK_NODES.NEXTVAL, 
     1, 
     'Chemistry of Life', 
     0, 
     1, 
     SYSDATE, 
     null, 
     'CON.3.1', 
     null); 

सामान्य में, हालांकि, आप कॉलमों को आप अपनी INSERT बयान में के लिए मान प्रदान कर रहे हैं सूचीबद्ध करना चाहते हैं। यह न केवल कॉलम दस्तावेज करता है ताकि भविष्य में डेवलपर को तालिका में कॉलम के क्रम को देखने की आवश्यकता न हो, तो भविष्य में तालिका में नए कॉलम जोड़े जाने पर यह आपकी सुरक्षा करता है।

INSERT INTO V1144Engine.T_NODES(<<list of columns>>) 
    VALUES(V1144ENGINE.S_PK_NODES.NEXTVAL, 
     1, 
     'Chemistry of Life', 
     0, 
     1, 
     SYSDATE, 
     null, 
     'CON.3.1', 
     null); 
+0

प्रासंगिक ओरेकल प्रलेखन अध्याय [अनुक्रम Pseudocolumns] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns002.htm#SQLRF00253) है। – user272735