[英]How do I use on delete cascade in mysql?
我有一個組件數據庫。 每個組件都屬於特定類型。 這意味着組件和類型之間存在多對一的關系。 當我刪除一個類型時,我想刪除所有具有該類型外鍵的組件。 但是如果我沒記錯的話,級聯刪除會在刪除組件時刪除類型。 有什么辦法可以做到我所描述的嗎?
這是您要包含在組件表中的內容。
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
)
請記住,您需要使用 InnoDB 存儲引擎:默認的 MyISAM 存儲引擎不支持外鍵。
使用這個 sql
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key WHERE 條件
您必須將外鍵約束定義為 ON DELETE CASCADE。
注意:需要使用 InnoDB 存儲引擎,默認 MyISAM 存儲引擎不支持外鍵關系。
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
Step 1. Create the buildings table:
CREATE TABLE buildings (
building_no INT PRIMARY KEY AUTO_INCREMENT,
building_name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
Step 2. Create the rooms table:
CREATE TABLE rooms (
room_no INT PRIMARY KEY AUTO_INCREMENT,
room_name VARCHAR(255) NOT NULL,
building_no INT NOT NULL,
FOREIGN KEY (building_no)
REFERENCES buildings (building_no)
ON DELETE CASCADE
);
Notice that the ON DELETE CASCADE clause at the end of the foreign key constraint
definition.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.