在oracle中更新主键

在oracle中更新主键,oracle,primary-key,Oracle,Primary Key,我有一张桌子。其中有5列,其中3列构成主键组合 桌上可乐,可乐,可乐,冷的,可乐 我想更新主键组中的一列。怎么做 它的主键约束错误 应该禁用“执行修改”并重新启用链接到主键的约束。唯一、非空等 看看这个您应该禁用进行修改并重新启用链接到主键的约束。唯一、非空等 如果您确实需要在这三列上保持唯一性,请查看此,然后在构成当前PK的三列上定义唯一约束,然后定义新的代理主键列。如果您确实需要在这三列上保持唯一性,然后在构成当前主键的三列上定义一个唯一约束,然后定义一个新的代理主键列。以防您也必须更改引用

我有一张桌子。其中有5列,其中3列构成主键组合

桌上可乐,可乐,可乐,冷的,可乐

我想更新主键组中的一列。怎么做


它的主键约束错误

应该禁用“执行修改”并重新启用链接到主键的约束。唯一、非空等


看看这个

您应该禁用进行修改并重新启用链接到主键的约束。唯一、非空等


如果您确实需要在这三列上保持唯一性,请查看此

,然后在构成当前PK的三列上定义唯一约束,然后定义新的代理主键列。

如果您确实需要在这三列上保持唯一性,然后在构成当前主键的三列上定义一个唯一约束,然后定义一个新的代理主键列。

以防您也必须更改引用数据。 第一个注意事项与MS SQL Server相反,没有更新级联的外键约束,请参阅


然后在主表中插入新行,更新引用表以引用新行,最后删除原始主行

以防万一您也必须更改引用数据。 第一个注意事项与MS SQL Server相反,没有更新级联的外键约束,请参阅


然后在主表中插入新行,更新引用表以引用新行,最后删除原始主行

为什么要更新主键?它应该是不可变的。您希望引用数据也保持不变或修改?为什么要更新主键?它应该是不可变的。您希望引用数据也保持不变或修改?为什么?主键只是一个候选键。使用哪种唯一性约束来强制关键点并不重要。至于添加代理,这完全取决于您将如何使用它。仅仅为了它而添加代理是没有意义的。稳定性而不是不变性是任何密钥的有用属性,但它不是绝对要求。甚至代理键有时也需要更新。例如,如果您必须更新主键以用于除异常情况数据迁移以外的任何其他情况,那么我建议该设计存在一些问题:我不同意。你可能有很好的理由想这么做。但是在任何情况下,你建议的解决方案都不会产生任何实际影响。更新主键约束强制执行的约束与更新唯一键约束强制执行的键完全相同。如果你真的想说一些关于外键的话,那么我想你应该说清楚——可能没有任何外键引用复合键,即使有,它们是否需要更新取决于要求。所以我认为你的答案一点帮助都没有。一个小学应该在它的整个生命周期中识别一个项目。更新主键会隐式地确认您拥有一些模型外知识,即更新前和更新后的值确实表示相同的项。真正定义行的不是您的模型。这正是唯一键和主键之间的区别。如果它可以改变,根据定义,它不能是主键,不管你喜欢与否。考虑一下数据库之外对特定项目的引用,如何处理PK的更新?为什么?主键只是一个候选键。使用哪种唯一性约束来强制关键点并不重要。至于添加代理,这完全取决于您将如何使用它。仅仅为了它而添加代理是没有意义的。稳定性而不是不变性是任何密钥的有用属性,但它不是绝对要求。甚至代理键有时也需要更新。例如,如果您必须更新主键以用于除异常情况数据迁移以外的任何其他情况,那么我建议该设计存在一些问题:我不同意。你可能有很好的理由想这么做。但是在任何情况下,你建议的解决方案都不会产生任何实际影响。更新主键约束强制执行的约束与更新唯一键约束强制执行的键完全相同。如果你真的想说一些关于外键的话,那么我想你应该说清楚——可能没有任何外键引用复合键,即使有,它们是否需要更新取决于要求。所以我认为你的答案一点帮助都没有。一个小学应该在它的整个生命周期中识别一个项目。更新主键隐式地确认您拥有一些更新前和更新后的模型外知识
e值真正代表同一项。真正定义行的不是您的模型。这正是唯一键和主键之间的区别。如果它可以改变,根据定义,它不能是主键,不管你喜欢与否。考虑一下数据库之外对特定项目的引用,如何处理PK的更新?