如果你永遠不會改變一個ID(更好地說:主鍵字段),是否有任何理由在數據庫中使用約束條件ON UPDATE
?使用ON UPDATE約束的原因
0
A
回答
0
InnoDB允許外鍵引用任何索引列或一組列。因此,僅當您從未更改引用字段(而不是主鍵)時,則可以忽略此問題。
除此之外,如果你不需要它,不要使用它。注意:缺省行爲(即,如果您省略ON UPDATE
子句)是拒絕引用字段上的任何更新,從而防止您在不知不覺中破壞參照完整性。
+0
謝謝。我認爲一個*被引用的字段*應該始終是主關鍵字或其在n:m關係表中的一部分,對吧? – stofl 2013-04-08 16:39:05
+1
@stofl是的,我可以想到沒有必要更新代理鍵(最常見的主鍵類型)的情況。不過,讓我來推薦你[這個答案](http://stackoverflow.com/a/1481611/1446005)。 – RandomSeed 2013-04-09 08:09:10
相關問題
- 1. Hibernate設置約束「ON UPDATE CASCADE」
- 2. PK約束UPDATE
- 3. 延誤的原因是外鍵約束
- 4. 外鍵約束消失的原因
- 5. 在外鍵約束中獲取ON DELETE ON UPDATE操作
- 6. 有兩個外鍵約束引用同一個主鍵,都使用ON UPDATE CASCADE
- 7. UPDATE上的SQL NULL約束只有
- 8. 重複的外鍵約束 - 導致或反對的原因
- 9. SQL約束和ON DELETE
- 10. Ruby On Rails - 路由約束
- 11. 數據庫插入失敗的原因爲外鍵約束
- 12. UPDATE語句與FOREIGN KEY約束衝突
- 13. UPDATE語句衝突與外鍵約束
- 14. NSInvalidArgumentException',原因:'無法解析約束格式:
- 15. 什麼原因INSERT語句與FOREIGN KEY約束衝突?
- 16. 使用由於外鍵約束導致的INSERT和UPDATE語句來禁用外鍵約束
- 17. 約束使用DATE
- 18. 引發QLSTATE的唯一約束[23000]:完整性約束違規:1062因爲唯一約束而重複
- 19. 使用contentLayoutGuide的約束
- 20. PostgreSQL約束 - ON DELETE CASCADE不被恢復
- 21. UPDATE語句衝突與asp.net的MVC外鍵約束5
- 22. 下面的代碼中「不可能約束」asm「錯誤的原因
- 23. INSERT ... ON DUPLICATE UPDATE
- 24. 使用phpMyAdmin複製數據庫失敗,因爲外鍵約束
- 25. 在DataAdapter上調用Update時VB.NET SQLite「約束失敗」?
- 26. 如何使用mongodb-insert-on-duplicate-key-update?
- 27. Apache RewriteEngine On原因403錯誤
- 28. scipy.optimize.leastsq有約束約束
- 29. 的multifier標識不能在UPDATE語句的約束
- 30. 不使用iframe的原因?
檢查此鏈接可能會幫助您http://stackoverflow.com/questions/1481476/when-to-use-on-update-cascade – 2013-04-08 16:16:10
謝謝。似乎沒有理由(如果ID不改變)。我想說,俱樂部/樂隊/音樂會的答案是糟糕的數據庫設計。 – stofl 2013-04-08 16:34:25