利用 MySQL 的 ON DELETE CASCADE 進行相關資料刪除
維護資料完整性通常需要在刪除父記錄時自動刪除關聯資料。 MySQL 的 ON DELETE CASCADE
限制條件提供了此功能。 一個常見的誤解是,當刪除子記錄時,該約束也會刪除父記錄;這是不正確的。
要實現所需的行為 - 在刪除父(類型)記錄時刪除子(組件)記錄而不影響父記錄 - 您必須使用 ON DELETE CASCADE
在子表中定義外鍵關係。 以下針對 components
表說明了這一點:
<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>
此配置可確保從 types
表中刪除記錄會自動刪除 components
表中的所有對應項目,而使 types
表記錄保持不變。
重要注意事項:
請記住,外鍵約束需要使用 InnoDB 儲存引擎。 MyISAM 是舊版 MySQL 中的預設引擎,不支援外鍵。 因此,請確保您的表使用 InnoDB 才能使此功能正常運作。
以上是MySQL刪除父記錄而不刪除父記錄時如何刪除子記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!