首頁 > 資料庫 > mysql教程 > MySQL刪除父記錄而不刪除父記錄時如何刪除子記錄?

MySQL刪除父記錄而不刪除父記錄時如何刪除子記錄?

Patricia Arquette
發布: 2025-01-10 12:17:42
原創
424 人瀏覽過

How to Delete Child Records in MySQL When a Parent Record is Deleted (Without Deleting the Parent)

利用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板