【发布时间】:2015-02-03 01:42:37
【问题描述】:
在Microsoft SQL Server 和 MySQL 中,索引名称需要在表中唯一,但在数据库中不需要。 PostgreSQL 似乎不是这种情况。
这就是我正在做的事情:我使用CREATE TABLE new_table AS SELECT * FROM old_table 等创建了一个表的副本,并且需要重新创建索引。
运行类似CREATE INDEX idx_column_name ON new_table USING GIST(column_name) 的查询会导致ERROR: relation "idx_column_name" already exists
这是怎么回事?
【问题讨论】:
-
名称在模式中是唯一的。 (schema := 表和约束(和函数等)的命名空间。(尽管允许跨模式约束))
-
顺便说一句:这是实际的错误消息吗? (
idx_column_name与idx_pickup_geom不同) -
索引与表共享相同的命名空间 (:=schema)。 (索引:=表)。你需要发明另一个名字(或省略它:系统可以为你发明一个名字)
-
@wildplasser 感谢您的解释和建议。我给了它+1。想要将其添加为答案?
-
我可以。哦,好吧:也许我应该。对于未来的读者。
标签: postgresql indexing