使用h2数据库创建表

时间:2012-08-09 13:45:54

标签: spring hibernate h2

我是h2的新手。我只是在hibernate的spring嵌入模式下使用h2。我正在尝试使用h2执行以下脚本。

CREATE TABLE acct_authority (
  id bigint(20) NOT NULL auto_increment,
  name varchar(255) NOT NULL default '',
  value varchar(255) NOT NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY name (name)
);

创建表acct_authority时没有任何错误。但是如果我使用以下脚本创建另一个表。

CREATE TABLE acct_role (
  id bigint(20) NOT NULL auto_increment,
  name varchar(255) NOT NULL default '',
  PRIMARY KEY  (id),
  UNIQUE KEY name (name)
);

它显示错误,因为约束名已经存在。我做了什么错误。

1 个答案:

答案 0 :(得分:12)

您尝试创建两个具有相同名称的约束。如您所见,两个CREATE TABLE语句都包含以下内容:

UNIQUE KEY name (name)

结果是第一个创建名为 name 的约束,第二个失败,因为约束 name 已经存在。问题可以通过使用唯一名称来解决。另外一般来说,对数据库对象有更多描述性名称是有意义的。也许您可以使用例如以下内容:

  UNIQUE KEY acct_authority_name_UNIQUE (name)  
  ...  
  UNIQUE KEY acct_role_name_UNIQUE (name)