回答
您应该禁用您的修改,重新启用链接到您的主键的约束。 (唯一的,非空,等...)
看看这个website
如果你真的需要在这三根柱子保持唯一性,然后定义一个唯一约束的三列组成的当前的PK,然后定义一个新的代理主键列。
为什么?主键只是候选键。您使用哪个唯一性约束来强制执行密钥并没有什么不同。至于添加替代品,这一切取决于你将如何使用它。为了它而添加替代品没有意义。稳定性(不是“不变性”)是任何关键的有用属性,但它不是绝对的要求。即使代理键有时需要更新。 – sqlvogel 2010-12-17 10:58:53
如果您不得不为特殊情况(例如数据迁移)以外的任何事情更新主键,那么我会建议设计出现问题:http://stackoverflow.com/questions/2499246/how-更新主键/ 2499507#2499507 – davek 2010-12-17 11:03:06
我不同意。你可能想要做这件事有很好的理由。但无论如何,你建议的解决方案并没有实际的区别。更新由PRIMARY KEY约束强制执行的约束与更新由UNIQUE密钥约束执行的密钥完全相同。如果你真的打算说*外键*,那么我认为你可以明确表示 - 可能没有任何外键引用复合键,即使有,那么是否需要更新取决于需求。所以我认为你的答案根本没有帮助。 – sqlvogel 2010-12-17 11:35:22
以防万一您必须更改转诊数据。 第一次注意与MS-SQL-Server相反,在更新级联上没有外键约束,参见How to create a Foreign Key with “ON UPDATE CASCADE” on Oracle?。
比我会在主表中插入一个新行,更新引用表引用新行,最后删除原来的主要行。
- 1. 在Oracle中更改主键
- 2. 外键没有在oracle中使用主键更新
- 3. 添加更新级联到oracle中已经存在的主键
- 4. 更新主键
- 5. 更改Oracle中的主键值
- 6. 更新POSTGRESQL中的主键
- 7. 外键不主键更新?
- 8. 在网格视图中更新主键
- 9. 在oracle中查找表中的主键
- 10. Oracle外键或主键
- 11. Oracle Update更新主键列需要很长时间
- 12. Oracle APEX 4.2主键?
- 13. 如何在Oracle中获取主键列?
- 14. 更新错误 - 的主键
- 15. 使用LINQ更新主键
- 16. 缓慢更新(主键)
- 17. 更新一列有主键
- 18. 讨论:更新主键值
- 19. 如何更新主键?
- 20. 更新Oracle中
- 21. 更新在Oracle
- 22. 我想用主键的新值更新表的主键
- 23. SQL更新主键和外键同时
- 24. mariadb在更新时丢失主键
- 25. 在oracle中使用更新
- 26. 在Oracle中更新CLOB XML
- 27. 在主键更改后更新了重构外键
- 28. 以oracle形式更新主板
- 29. Oracle更新查询忽略主约束
- 30. 使用外键值的Oracle Sql更新?
你为什么要更新主键?它应该是不可变的。 – davek 2010-12-17 10:18:35
有需要。请帮助 – 2010-12-17 10:19:39
您希望您的参考数据保持不变或修改? – 2010-12-17 10:30:56