我有一个组件数据库。每个组件都属于特定类型。这意味着组件和类型之间存在多对一的关系。当我删除一个类型时,我想删除所有具有该类型外键的组件。但是如果我没记错的话,级联删除会在删除组件时删除类型。有什么办法可以做我描述的吗?
Marius
问问题
80702 次
4 回答
58
这是您要包含在组件表中的内容。
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 存储引擎不支持外键。
于 2009-02-04T13:37:48.727 回答
4
使用这个 sql
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key WHERE 条件
于 2016-07-25T08:14:29.583 回答
2
您必须将外键约束定义为 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
)
于 2016-04-04T09:30:57.947 回答
0
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.
于 2020-10-28T04:02:27.517 回答