【发布时间】:2012-03-27 23:17:00
【问题描述】:
如何使用 h2 数据库在 CREATE TABLE 语句中创建多列主键? 根据我的调查,在 mySQL 和 Apache Derby 数据库中执行此操作的代码是:
CREATE TABLE SAMP.SCHED(
CLASS_CODE CHAR(7) NOT NULL,
DAY SMALLINT NOT NULL,
STARTING TIME,
ENDING TIME,
PRIMARY KEY (CLASS_CODE, DAY));
但这在 h2 中不起作用,它会导致 'org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement'
非常感谢任何帮助。谢谢
【问题讨论】:
-
如果我正确理解了文档 (h2database.com/html/grammar.html#constraint),那么您的 PRIMARY KEY 声明没有任何问题 - 该声明是否可能还有其他问题?
-
您发布的语句对我有用(当我针对 H2 数据库运行时没有语法错误)。
-
哦,亲爱的,你是对的,我在我的代码中遗漏了最后一个括号,所以有一个未闭合的括号。对不起,伙计们,这是一个非常愚蠢的错误。为麻烦道歉。可惜 IDE 不解析 SQL 字符串并检查类似的东西。
-
我认为SQL语句不应该是字符串,而是应该在编程语言本身中指定SQL语句。这将使此类问题无效,而且会使代码注入变得不可能。这就是我启动 H2 子项目 JaQu 的原因。