11
A
回答
29
ON DELETE CASCADE和ON DELETE RESTRICT是外鍵屬性,您可以在創建兩個表格之間的關係時設置它們。
如果將關係設置爲ON DELETE CASCADE,意味着當您在父表上運行DELETE語句時,它將自動從CHILD表中刪除所有相應的行,但是RESTRICT(這是缺省外鍵關係行爲)是當您嘗試從父表中刪除一行並且具有相同標識的子表中存在一行時,它將無法投訴現有的子行。
無論哪種方式,您不需要在DELETE子句中提及任何內容。
我也寫了一篇博客文章在這裏更詳細的DELETE和UPDATE命令不同的規則:
https://koukia.ca/sql-server-foreign-key-update-and-delete-rules-556cf09117fe
0
權利,使這些ON DELETE和ON UPDATE適用於父表/行。 NO ACTION和RESTRICT的原因是一樣的,因爲如果父母不存在,你就不能與孩子和父母建立關係。
4
有三種類型的上刪除與外鍵
- 相關ON DELETE CASCADE:當數據從父表中刪除,自動從子表(外鍵表)刪除的數據。
- On刪除set Null:當從父表中刪除數據時,外鍵關聯單元在子表中將爲空。
- 關於刪除限制:從父表中刪除數據時,如果存在與子表關聯的外鍵,則會發生錯誤,您無法刪除該記錄。
相關問題
- 1. 壓縮數據庫和SQL Server數據庫之間的區別
- 2. Redis(鍵/值數據庫)和關聯數組之間的區別?
- 3. JPA級聯註釋和Hibernate級聯註釋之間的區別
- 4. 「數據庫還原」和「數據庫部署」之間的區別?
- 5. SQL Server中數據庫級別觸發器和服務器級別觸發器之間的區別
- 6. SQL臨時數據庫,臨時表和表之間的區別
- 7. 三級和三級之間的區別?
- 8. 數據庫中的竊取和強制之間的區別
- 9. 單個數據庫和彈性SQL數據庫之間的區別
- 10. .SQL和.DUMP文件之間的區別
- 11. 數據庫術語之間的區別
- 12. 十進制和decimal.value之間的區別?
- 13. Microsoft Azure門戶中的SQL數據庫和SQL Server之間的區別
- 14. 內聯函數和靜態內聯函數之間的區別
- 15. CUDA級別和計算級別之間的區別?
- 16. PROC SQL和sqldf之間的區別
- 17. 知識庫和數據庫之間的區別
- 18. 容器和數據庫之間的區別?
- 19. 爲數據庫水平和垂直縮放之間的區別
- 20. DAO:InMemory實現和數據庫實現之間的區別
- 21. Apache Spark SQL和MongoDB之間的區別?
- 22. 兩個SQL Server數據庫快照之間的區別
- 23. 「複製」和「複製限定名稱」之間的區別
- 24. .dbo和.mdf數據庫之間的區別
- 25. 如何管理Rails關聯和數據庫外鍵約束之間的區別?
- 26. DDL和VDL的區別
- 27. PDO:rowCount()和SQL COUNT(col)之間的區別
- 28. 數據庫名稱和數據庫中'名稱'參數之間的區別
- 29. 圖表和Facebook中的MYSQL數據庫之間的區別?
- 30. 文件中和數據庫中的會話之間的區別
因此,當我說ON DELETE RESTRICT時,從父表中刪除的行不會從其他表中刪除? – user3102872
當它設置爲RESTRICT時,沒有任何行(父或子)將被刪除,並且您將看到並顯示錯誤。如果您希望刪除父行而不管子行是否存在,則應該使用NO ACTION。 – Aram
所以,** Cascade **意味着當我刪除父母時,孩子也會被刪除。 **限制**給我一個錯誤,當我嘗試刪除。 **沒有行動**當我刪除父母時,並沒有改變孩子的任何事情。 **設置默認**將孩子設置爲默認值,當我刪除父母。 **設置爲空**將父項刪除時將子項設置爲null。我對嗎?非常感謝你 – user3102872