删除带有外键的记录

时间:2016-02-27 15:38:28

标签: mysql

我有一张表,其中包含on delete restrict的外键。现在,如果一条记录专门引用自身(即它自己的父级),如何在不获取外键错误的情况下删除它?

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `uuid_was` varchar(36) NOT NULL,
  `uuid_is` varchar(36) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;
ALTER TABLE `test`
  ADD UNIQUE KEY `uuid_was` (`uuid_was`);
ALTER TABLE `test` ADD FOREIGN KEY (`set`)
  REFERENCES `test`(`item`)
  ON DELETE RESTRICT ON UPDATE CASCADE;

INSERT INTO `test` (`item`, `set`) VALUES ('b', 'b');
DELETE FROM `test` WHERE `item`='b' and `set` = 'b'; // FOREIGN KEY FAIL

我理解有SET FOREIGN_KEY_CHECKS=0但可以通过改进我的表/约束定义来解决这个问题吗?

0 个答案:

没有答案
相关问题