2012-03-11 189 views
10

¿Cómo puedo crear una clave principal de varias columnas dentro de la instrucción CREATE TABLE utilizando la base de datos h2? De mis investigaciones, el código para hacerlo de bases de datos MySQL y Apache Derby es:h2 sql, crear tabla con clave primaria de varias columnas?

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

Pero esto no funciona en h2, el resultado es un 'org.h2.jdbc.JdbcSQLException: Error de sintaxis en sentencia SQL'

Cualquier ayuda es muy apreciada. Gracias

+1

Si entiendo la documentación (http://www.h2database.com/html/grammar .html # constraint) correctamente, no hay nada de malo con su declaración PRIMARY KEY - ¿es posible que haya algo más erróneo en la declaración? –

+1

La declaración que ha publicado funciona para mí (no hay ningún error de sintaxis cuando me ejecuto contra la base de datos H2). –

+0

Oh querida, tienes razón, me dejó fuera el último soporte en mi código, así que había un soporte sin cerrar. Lo siento muchachos, ese es un error realmente tonto. Disculpas por el problema Es una lástima que los IDE no analicen las cadenas de SQL y comprueben cosas así. – keithphw

Respuesta

9

A partir de aquí:

esto debería funcionar:

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

¡Agradable! Gracias por la respuesta rápida icyrock, eso funciona. Aún así, es tan extraño que no hay una manera obvia de hacerlo en la instrucción CREATE TABLE. – keithphw

+0

¡Claro, me alegro de que funcionó! –

+8

El 'CREATE TABLE (..., PRIMARY KEY (CLASS_CODE, DIA))' funciona bien con la base de datos de H2. Algo más debe haber estado mal cuando ejecutó la declaración. –

Cuestiones relacionadas