首页 > 解决方案 > MySQL在不使用触发器的情况下对父行进行软删除时级联硬删除子行:这可能吗?

问题描述

我正在使用 MySQL 版本 5.6.47-87.0

我有一个名为 的父表parentTable和一个名为 的子表childTable,这是创建这些表的脚本:

CREATE TABLE `parentTable` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customerId` int(10) unsigned NOT NULL,  
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `deleted` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=251046 DEFAULT CHARSET=utf8;


CREATE TABLE `childTable` (
  `parentId` int(10) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text
  PRIMARY KEY (`parentId`),
  CONSTRAINT `childtable_parentid_foreign` FOREIGN KEY (`parentId`) REFERENCES `parentTable` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

childTable当相应的记录被硬删除时,子记录也parentTable被硬删除。

在不使用触发器的情况下,是否可以进行设置,以便在软删除childTable相应记录时硬删除记录parentTable(即:当parentTable.deleted使用值更新列时,它不再是NULL)?

标签: mysql

解决方案


推荐阅读