我们可以更新表的主键值吗?
答案 0 :(得分:35)
人们普遍认为primary keys should be immutable(或as stable as possible因为不能在DB中强制实施不变性。虽然没有任何东西可以阻止您更新主键(完整性约束除外),但这可能不是一个好主意:
从表现的角度来看:
其他考虑因素:
总之,在设计过程中,使用代理键代替应该不会改变的自然主键通常更安全 - 但最终可能因需求更改甚至数据输入错误而需要更新。
如果您必须使用子表更新主键,请参阅this post by Tom Kyte for a solution。
答案 1 :(得分:10)
主键属性与表的任何其他属性一样可更新。稳定性通常是关键的理想属性,但绝对不是绝对要求。如果从业务角度更新密钥是有意义的,那么没有根本原因你不应该这样做。
答案 2 :(得分:5)
你可以只要
答案 3 :(得分:2)
简短回答:是的,你可以。当然,您必须确保新值与任何现有值不匹配,并且满足其他约束(duh)。
你究竟想做什么?
答案 4 :(得分:2)
从关系数据库理论的角度来看,更新表的主键应该绝对没有问题,只要主键之间没有重复,并且您不尝试将NULL值放入任何表中。主键列。
答案 5 :(得分:1)
在某些情况下,你可以。
但是您认为这是一个强烈的迹象,表明您的架构存在问题:主要密钥应该是纯粹的技术,并且没有任何商业意义。所以永远不需要改变它们。
托马斯