首頁 >資料庫 >mysql教程 >MySQL的ON DELETE CASCADE可以自動刪除元件記錄,同時保留類型記錄嗎?

MySQL的ON DELETE CASCADE可以自動刪除元件記錄,同時保留類型記錄嗎?

Patricia Arquette
Patricia Arquette原創
2025-01-10 12:19:42491瀏覽

Can MySQL's ON DELETE CASCADE Automatically Delete Component Records While Preserving the Type Record?

MySQL 的 ON DELETE CASCADE:在保留類型記錄的同時刪除元件

MySQL 的 ON DELETE CASCADE 在刪除相關記錄時提供自動刪除相關記錄的功能。 但它的應用需要仔細考慮表關係。

考慮一個資料庫結構組件,每個組件都連結到一個特定類型。目標:刪除與類型關聯的所有元件,而不刪除類型本身。 這可以實現嗎?

方法

實現這一點需要在明確定義的表結構中策略性地使用ON DELETE CASCADE。 解決方法如下:

<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>
  1. 組件表建立:此表保存組件詳細資料及其對應的typeId

  2. 外鍵實作: 外鍵限制 (myForeignKey) 將 components 表的 typeId 欄位連接到 types 表的 id 欄位。

  3. ON DELETE CASCADE 規格: 關鍵元素:ON DELETE CASCADE。 當types表中的記錄被刪除時(假設兩個表都使用InnoDB儲存引擎),components表中共享typeId的所有相關記錄都會自動刪除。

關鍵考慮因素:

InnoDB 是必不可少的。 MyISAM 由於缺乏外鍵支持,導致這種方法無效。

以上是MySQL的ON DELETE CASCADE可以自動刪除元件記錄,同時保留類型記錄嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn