【问题标题】:MySQL "ON DELETE CASCADE" is too powerfulMySQL“ON DELETE CASCADE”太强大了
【发布时间】:2025-11-30 00:50:01
【问题描述】:

嘿,这里有以下问题:我的桌子上有一个位置的人,如果我删除位置表的位置,我不会失去分配的人。在 id=1 的位置中有一个条目,名称是:“无位置”。这就是我想要做的,但我失败了!

ALTER TABLE `persons`
  ADD CONSTRAINT `persons_ibfk_1` FOREIGN KEY (`location_id`)
  REFERENCES `locations` (`id`) ON DELETE SET `location_id` = 1;

谢谢!

【问题讨论】:

    标签: sql mysql database data-structures constraints


    【解决方案1】:

    使用ON DELETE SET DEFAULT(并将1设为默认值)或ON DELETE SET NULL。 第三种选择是在删除之前手动将所有 id 设置为 1。

    【讨论】: