2012-03-11 25 views
10

h2 veritabanını kullanarak CREATE TABLE ifadesinde çok sütunlu bir birincil anahtar nasıl oluşturabilirim? Benim Arastirmalarimizdan , kod mySQL ve Apache Derby veritabanlarında böylece yapmaktır:h2 sql, çok sütunlu birincil anahtar içeren tablo oluşturulsun mu?

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

Ama bu h2 çalışmaz, bir 'org.h2.jdbc.JdbcSQLException sonuçlanır: sözdizimi hatası içinde SQL deyimi '

Herhangi bir yardım çok takdir edilmektedir. Teşekkür

Buradan
+1

I (belgelerine anlamak http://www.h2database.com/html/grammar .html # kısıtlaması), PRIMARY KEY deklarasyonunuzda yanlış bir şey yok - bu açıklamada yanlış bir şey olması mümkün mü? –

+1

Gönderdiğiniz ifade benim için çalışıyor (H2 veritabanına karşı çalıştığımda sözdizimi hatası yok). –

+0

Ah canım, haklısın, kodumdaki son parantezin dışına çıktım, böylece kapatılmamış bir parantez vardı. Üzgünüm çocuklar, bu gerçekten aptal bir hatadır. Sorun için özür dilerim. Böyle bir acıma, IDE'lerin SQL dizilerini ayrıştırmamakta ve bunun gibi şeyleri kontrol etmemektedir. – keithphw

cevap

9

:

bu çalışması gerekir:

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

Güzel! Hızlı cevap icyrock için teşekkürler, bu işe yarıyor. Yine de, CREATE TABLE deyiminde bunu yapmanın açık bir yolu yoktur garip. – keithphw

+0

Elbette, işe yaradığı için sevindim! –

+8

'CREATE TABLE (..., PRIMARY KEY (CLASS_CODE, DAY))' H2 veritabanı ile iyi çalışır. İfadeyi çalıştırdığınızda başka bir şey yanlış olmalı. –

İlgili konular