我需要当前PK可以具有重复值,因此我们决定将其更改为复合键以允许复制。我们将在PK中添加另一列。我想在更改之前考虑一些需要考虑的事项?
答案 0 :(得分:2)
我想到的第一件事就是有任何外键引用了将要更改的主键,如果有,那么你也需要更改外键,这可能意味着向子表添加其他列要做到这一点。
第二件事,Oracle中的所有PK都由唯一索引支持,如果您对该表的选择查询正在命中该索引,这也用于快速访问特定行,如果更改PK则更改index so select先前使用旧索引的查询可能不会使用新创建的索引,因此可能会更慢。
第三件事,添加一个额外的列来制作新的复合PK你隐含地在该附加列上放置一个非空约束,这意味着在创建新PK之前不应该有空值,并且在其中没有空值后。