ERROR在表上创建索引时,PostgreSQL中已存在关系

时间:2014-01-30 15:26:05

标签: postgresql indexing

从Java代码

运行PostgreSQL下面的查询时出错
 .....
 sql =  "CREATE TABLE IF NOT EXISTS table1 (s VARCHAR(100), p VARCHAR(100), o VARCHAR(100), PRIMARY KEY (s,p,o)) ; ";                   
 pgsql.runUpdateQuery(sql);         

 sql =  "CREATE INDEX indextable1 ON table1 (s,p,o);";  
 pgsql.runUpdateQuery(sql);         
 .....

但我得到以下错误

org.postgresql.util.PSQLException: ERROR: relation "indextable1" already exists         

有人可以解释一下它发生了什么吗?我的理解是PRIMARY KEY被认为是INDEX,因此第二个查询失败。我是对的吗?

1 个答案:

答案 0 :(得分:1)

问题是主键约束名称与表名相等。我不知道postgres如何表示约束,但我认为在创建主键约束期间会触发错误“Relation already exists”,因为已经声明了表。但由于这个错误,表格最终没有创建。