MySQL多对多表关系删除策略

菜单表:

CREATE TABLE `es_menu` (
  `id` bigint(20) NOT NULL auto_increment,
  `menuname` varchar(24) NOT NULL,
  `sort` tinyint(4) NOT NULL,
  `inputtime` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

模块表:

CREATE TABLE `es_model` (
  `id` bigint(20) NOT NULL auto_increment,
  `modelname` varchar(24) NOT NULL,
  `sort` tinyint(12) NOT NULL,
  `inputtime` datetime NOT NULL,
  `url` varchar(24) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

中间表:

CREATE TABLE `es_menu_model` (
  `id` bigint(20) NOT NULL auto_increment,
  `es_menu_id` bigint(20) NOT NULL,
  `es_model_id` bigint(20) NOT NULL,
  `inputtime` datetime NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `menu_model_menu` (`es_menu_id`),
  KEY `menu_model_model` (`es_model_id`),
  CONSTRAINT `menu_model_menu` FOREIGN KEY (`es_menu_id`) REFERENCES `es_menu` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `menu_model_model` FOREIGN KEY (`es_model_id`) REFERENCES `es_model` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

菜单表和模块表示多对多关系

在三张表中,因为中间表设置了外键,ON DELETE CASCADE ON UPDATE CASCADE,所以,在当菜单表或者模块表中的数据有删除的时候相对应的中间表的数据也对应删除。例如:模块中有id为1的数据,在中间表中有插入该数据,在模块表中删除该条数据的时候,对应中间表的数据也会剔除。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值