从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
,因此第二个查询失败。我是对的吗?
答案 0 :(得分:1)
问题是主键约束名称与表名相等。我不知道postgres如何表示约束,但我认为在创建主键约束期间会触发错误“Relation already exists”,因为已经声明了表。但由于这个错误,表格最终没有创建。