2012-03-11 6 views
10

मैं h2 डेटाबेस का उपयोग कर CREATE TABLE कथन के भीतर एक बहु-स्तंभ प्राथमिक कुंजी कैसे बना सकता हूं? मेरी जांच से, कोड MySQL और अपाचे डर्बी डेटाबेस में ऐसा करने के लिए है:एच 2 एसक्यूएल, बहु-स्तंभ प्राथमिक कुंजी के साथ तालिका बनाएँ?

CREATE TABLE SAMP.SCHED(
    CLASS_CODE CHAR(7) NOT NULL, 
    DAY SMALLINT NOT NULL, 
    STARTING TIME, 
    ENDING TIME, 
    PRIMARY KEY (CLASS_CODE, DAY)); 

लेकिन इस h2 में काम नहीं करता है, यह एक 'org.h2.jdbc.JdbcSQLException में परिणाम: में सिंटेक्स त्रुटि एसक्यूएल कथन '

किसी भी मदद की बहुत सराहना की जाती है। धन्यवाद

+1

अगर मैं प्रलेखन समझ (http://www.h2database.com/html/grammar .html # बाधा) ठीक है, आपके प्राथमिक कुंजी घोषणा के साथ कुछ भी गलत नहीं है - क्या यह संभव है कि कथन के साथ कुछ और गलत हो? –

+1

आपके द्वारा पोस्ट किया गया कथन मेरे लिए काम करता है (जब मैं H2 डेटाबेस के विरुद्ध चलाता हूं तो कोई वाक्यविन्यास त्रुटि नहीं होती है)। –

+0

ओह प्रिय, आप सही हैं, मैंने अपने कोड में आखिरी ब्रैकेट छोड़ा था, इसलिए एक अनजान ब्रैकेट था। क्षमा करें दोस्तों, यह वास्तव में गूंगा गलती है। मुसीबत के लिए माफ़ी। इस तरह की करुणा है कि आईडीई एसक्यूएल तारों का विश्लेषण नहीं करता है और इस तरह की चीजों की जांच करता है। – keithphw

उत्तर

9

यहाँ से:

इस काम करना चाहिए:

ALTER TABLE SAMP.SCHED ADD PRIMARY KEY (CLASS_CODE, DAY) 
+0

अच्छा! त्वरित जवाब icyrock के लिए धन्यवाद, जो काम करता है। फिर भी, अजीब बात है कि CREATE तालिका कथन में इसे करने का कोई स्पष्ट तरीका नहीं है। – keithphw

+0

निश्चित बात, खुशी है कि यह काम किया! –

+8

'तालिका बनाएं (..., प्राथमिक कुंजी (CLASS_CODE, DAY))' H2 डेटाबेस के साथ अच्छी तरह से काम करता है। जब आप कथन चलाते हैं तो कुछ और गलत होना चाहिए। –

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