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>
組件表建立:此表保存組件詳細資料及其對應的typeId
。
外鍵實作: 外鍵限制 (myForeignKey
) 將 components
表的 typeId
欄位連接到 types
表的 id
欄位。
ON DELETE CASCADE 規格: 關鍵元素:ON DELETE CASCADE
。 當types
表中的記錄被刪除時(假設兩個表都使用InnoDB儲存引擎),components
表中共享typeId
的所有相關記錄都會自動刪除。
關鍵考慮因素:
InnoDB 是必不可少的。 MyISAM 由於缺乏外鍵支持,導致這種方法無效。
以上是MySQL的ON DELETE CASCADE可以自動刪除元件記錄,同時保留類型記錄嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!