2012-08-09 12 views
6

के साथ तालिका निर्माण मैं h2 के लिए नया हूं। मैं बस h2bern के साथ वसंत एम्बेडेड मोड में h2 का उपयोग कर रहा हूं। मैं h2 का उपयोग करके निम्न स्क्रिप्ट निष्पादित करने का प्रयास कर रहा हूं। अगर मैं निम्न स्क्रिप्ट के साथ एक और तालिका बनानेएच 2 डेटाबेस

CREATE TABLE acct_authority (
    id bigint(20) NOT NULL auto_increment, 
    name varchar(255) NOT NULL default '', 
    value varchar(255) NOT NULL, 
    PRIMARY KEY (id), 
    UNIQUE KEY name (name) 
); 

तालिका acct_authority किसी भी error.But बिना बनाया जाता है।

CREATE TABLE acct_role (
    id bigint(20) NOT NULL auto_increment, 
    name varchar(255) NOT NULL default '', 
    PRIMARY KEY (id), 
    UNIQUE KEY name (name) 
); 

यह त्रुटि दिखाता है क्योंकि बाधा नाम पहले से मौजूद है। मैंने क्या गलती की।

उत्तर

10

आपने एक ही नाम के साथ दो बाधाएं बनाने की कोशिश की। जैसा कि आप देख, दोनों टेबल कथन बनाएं होते हैं निम्नलिखित:

UNIQUE KEY name (name) 

परिणाम पहले एक बाधा नाम नामित बनाता है कि है, और दूसरा एक विफल रहता है बाधा नाम पहले से मौजूद है क्योंकि। अद्वितीय नामों का उपयोग करके समस्या हल की जा सकती है। सामान्य रूप से यह समझ में आता है कि डेटाबेस ऑब्जेक्ट्स के लिए थोड़ा और वर्णनात्मक नाम हैं। हो सकता है कि आप उदाहरण के लिए कुछ उदाहरण दे सकें:

UNIQUE KEY acct_authority_name_UNIQUE (name) 
    ... 
    UNIQUE KEY acct_role_name_UNIQUE (name) 
+2

हाँ, यह समस्या है। मैं बस जोड़ना चाहता था, केवल एकमात्र डेटाबेस जो मुझे पता है कि गैर अद्वितीय बाधाओं का समर्थन करता है नाम MySQL है (वहां, बाधाओं को केवल एक तालिका के भीतर अद्वितीय होना चाहिए)। अन्य सभी डेटाबेस को स्कीमा के भीतर अनन्य होने के लिए बाधाओं के नाम की आवश्यकता होती है। –

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