学习记录-MySQL使用问题记录

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';

这样会同时删除相关联的数据。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值