我正在运行 PostgreSQL 9.1.4。
我有一个包含许多现有行的表,以及一堆其他带有指向它的外键的表,我正在尝试:
1 - 删除当前主键上的 pkey 约束,因为它当前不是串行类型。
2 - 添加一个串行类型的列并将该新列作为主键。
3 - 将步骤 #1 的旧列设置为 UNIQUE 并为所有具有指向我的表的外键的表重新创建外键。事实上,这些表都有两个指向我的表的外键:一个指向当前作为主键的旧列,另一个指向新的串行类型列
我已经成功创建了一个执行此操作的脚本,但我想知道:
a) 在上面的第 1 步删除 pkey 约束是否也会删除与该主键关联的索引?
b)如果没有,有没有办法重用该索引?在第 3 步添加回 UNIQUE 约束后,会创建一个新索引还是使用之前存在的索引?除了创建的新列(串行主键)外,表中没有任何内容被更改。
编辑(一些澄清):
postgresql index database-design primary-key unique-constraint