2012-03-11 9 views
10

Come posso creare una chiave primaria a più colonne all'interno dell'istruzione CREATE TABLE utilizzando il database h2? Dalle mie indagini, il codice per farlo in database MySQL e Apache Derby è:h2 sql, creare una tabella con chiave primaria a più colonne?

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

Ma questo non funziona in H2, si traduce in un 'org.h2.jdbc.JdbcSQLException: Errore di sintassi nella Dichiarazione SQL '

Qualsiasi aiuto è molto apprezzato. Grazie

+1

Se ho ben capito la documentazione (http://www.h2database.com/html/grammar .html # constraint) correttamente, non c'è niente di sbagliato nella dichiarazione PRIMARY KEY - è possibile che ci sia qualcos'altro che non va nell'istruzione? –

+1

La dichiarazione che hai postato funziona per me (non c'è errore di sintassi quando corro nel database H2). –

+0

Oh caro, hai ragione, ho lasciato fuori l'ultima parentesi nel mio codice, quindi c'era una parentesi non chiusa. Scusate ragazzi, è un errore davvero stupido. Ci scusiamo per il disturbo. È un peccato che gli IDE non analizzino le stringhe SQL e controllino cose del genere. – keithphw

risposta

9

Da qui:

questo dovrebbe funzionare:

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

Bello! Grazie per la rapida risposta icyrock, che funziona. Comunque, è così strano che non ci sia un modo ovvio per farlo nell'istruzione CREATE TABLE. – keithphw

+0

Certo, felice che abbia funzionato! –

+8

'CREATE TABLE (..., PRIMARY KEY (CLASS_CODE, DAY))' funziona bene con il database H2. Qualcos'altro dev'essere stato sbagliato quando hai eseguito la dichiarazione. –

Problemi correlati