2012-03-11 130 views
10

如何在CREATE TABLE语句内使用h2数据库创建多列主键? 从我的调查,该代码在MySQL中和Apache Derby数据库,这样做是:h2 sql,用多列主键创建表?

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

但是,这并不在下半年的工作,它会导致“org.h2.jdbc.JdbcSQLException:语法错误SQL语句'

任何帮助,非常感谢。由于

+1

如果我理解的文档(http://www.h2database.com/html/grammar .html#constraint),您的PRIMARY KEY声明没有问题 - 声明中可能还有其他错误吗? – 2012-03-11 03:28:12

+1

您发布的声明适用于我(当我运行H2数据库时没有语法错误)。 – 2012-03-11 09:16:13

+0

哦,亲爱的,你是对的,我遗漏了我的代码中的最后一个括号,所以有一个未关闭的括号。对不起,这是一个非常愚蠢的错误。为麻烦抱歉。可惜IDE不会解析SQL字符串并检查那样的东西。 – keithphw 2012-03-11 13:08:22

回答

9

从这里:

这应该工作:

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

不错!感谢您的快速回复冰雹,这工作。尽管如此,奇怪的是,在CREATE TABLE语句中没有明显的方法来实现它。 – keithphw 2012-03-11 04:07:48

+0

当然,很高兴它解决了! – 2012-03-11 04:08:37

+8

'CREATE TABLE(...,PRIMARY KEY(CLASS_CODE,DAY))'适用于H2数据库。当您运行该陈述时,其他事情一定是错的。 – 2012-03-11 09:19:35