MySQL版本 5.7.12
删除主表记录,同时删除关联子表记录,在创建表的外键时添加一下设置,删除时直接删除主表,关联表数据自动删除,多级关联表也可删除
ON DELETE CASCADE ON UPDATE CASCADE
例子:
主表
CREATE TABLE `t_lj_file_info` (
`F_ID` INT(11) NOT NULL AUTO_INCREMENT,
`F_NAME` VARCHAR(100) NULL DEFAULT NUL
PRIMARY KEY (`F_ID`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1;
1级子表
CREATE TABLE `t_lj_sample_info` (
`F_ID` INT(11) NOT NULL AUTO_INCREMENT,
`F_FILE_ID` INT(11) NULL DEFAULT NULL,
`F_GUID` CHAR(19) NULL DEFAULT NULL
PRIMARY KEY (`F_ID`),
INDEX `F_FILE_ID` (`F_FILE_ID`),
CONSTRAINT `t_lj_sample_info_ibfk_1` FOREIGN KEY (`F_FILE_ID`) REFERENCES `t_lj_file_info` (`F_ID`) ON DELETE CASCADE)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1;
2级子表
CREATE TABLE `t_param_result` (
`F_ID` INT(11),
`F_NAME` VARCHAR(10) NULL DEFAULT NULL,
`F_VALUE` FLOAT NULL DEFAULT NULL,
PRIMARY KEY (`F_ID`),
INDEX `F_SID` (`F_SID`),
CONSTRAINT `t_param_result_ibfk_1` FOREIGN KEY (`F_SID`) REFERENCES `t_sample_info` (`F_ID`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
t_lj_file_info表的F_ID被t_lj_sample_info表的F_FILE_ID字段作为外键使用,t_lj_sample_info表的F_ID被t_param_result表F_SID字段作为外键使用。在删除t_lj_file_info表记录时需要将t_lj_sample_info和t_param_result里相应的记录一起删除,如上创建表时添加外键设置,即可使用 delete from t_lj_file_info where F_NAME='CC1';
这样会同时删除相关联的数据。