如何在mysql中使用delete cascade?
我有一个组件数据库。每个组件都是特定类型的。这意味着组件和类型之间存在多对一关系。删除类型时,我希望删除具有该类型外键的所有组件。但是如果我没有弄错的话,cascade delete将在删除组件时删除该类型。有什么方法可以实现我所描述的吗?以下是您将包含在组件表中的内容如何在mysql中使用delete cascade?,mysql,sql,foreign-keys,cascade,Mysql,Sql,Foreign Keys,Cascade,我有一个组件数据库。每个组件都是特定类型的。这意味着组件和类型之间存在多对一关系。删除类型时,我希望删除具有该类型外键的所有组件。但是如果我没有弄错的话,cascade delete将在删除组件时删除该类型。有什么方法可以实现我所描述的吗?以下是您将包含在组件表中的内容 CREATE TABLE `components` ( `id` int(10) unsigned NOT NULL auto_increment, `typeId` int(10) unsigned NOT N
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存储引擎不支持外键。您必须将外键约束定义为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
)
使用此sql
删除T1、T2
从T1开始
T1.key=T2.key上的内部连接T2
如果使用条件来链接主键,则更新级联上的条件可能是一个坏主意,因为它应该是不可变的,并且依赖于此建议数据库可能需要重新设计,但是我想如果你用一个唯一但不是主键的外键链接它就可以了。这没有使用op要求的
CASCADE
功能。但是它在不更新现有数据库结构的情况下解决了这个问题。你能扩展这个答案吗?这会同时删除T1和T2中的行吗?“T1内部连接T2”中的顺序重要吗?
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.