MySQL 的「ON DELETE CASCADE」:維護引用完整性
資料庫設計經常涉及建立表格之間的關係。 MySQL 的 ON DELETE CASCADE
限制為自動管理相關資料刪除提供了強大的解決方案。這透過跨連結表同步刪除來確保資料完整性。
解引用完整性挑戰
考慮一個常見的場景:組件及其類型之間的多對一關係。 目標是在刪除特定類型時自動刪除與該類型關聯的所有元件。 然而,當刪除組件時,經常會出現類型意外刪除的擔憂。
正確的實作
關鍵是components
表上外鍵約束的精確定義。 以下是最佳化後的 SQL 程式碼:
<code class="language-sql">CREATE TABLE `components` ( `id` int(10) unsigned NOT NULL auto_increment, `typeId` int(10) unsigned NOT NULL, `moreInfo` VARCHAR(32), -- etc PRIMARY KEY (`id`), KEY `type` (`typeId`) CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`) REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE )</code>
詳細說明
外鍵定義: FOREIGN KEY
子句將 typeId
表中的 components
欄位連結到 id
表中的 types
欄位。
ON DELETE CASCADE
操作: 這個關鍵部分規定從 types
表中刪除一行將自動觸發刪除 components
表中 typeId
匹配的所有對應行。 🎜>
操作:ON UPDATE CASCADE
這可確保如果 表中的 id
更新,types
表中對應的 typeId
也會更新。 components
InnoDB 引擎需求: 外鍵約束需要 InnoDB 儲存引擎。 MyISAM,較舊的預設設置,缺乏此功能。
以上是MySQL中的「ON DELETE CASCADE」在刪除相關行時如何確保資料完整性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!