回答
您應該禁用您的修改,重新啓用鏈接到您的主鍵的約束。 (唯一的,非空,等...)
看看這個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