MySQL外键ON DELETE SET NULL

我想使用ON DELETE SET NULL为表创建外键,但是ALTER命令被拒绝。

CREATE TABLE `Locations`  (
  `id` int(0) NOT NULL,`name` varchar(255) NOT NULL,`image_id` int(0) UNSIGNED NULL DEFAULT NULL,PRIMARY KEY (`id`)
);

CREATE TABLE `Pictures`  (
  `id` int(0) NOT NULL,`url` varchar(255) NULL,PRIMARY KEY (`id`)
);

ALTER TABLE `Locations` 
  ADD CONSTRAINT `fk1` FOREIGN KEY (`image_id`) REFERENCES `Pictures` (`id`) ON DELETE SET NULL;

到目前为止,我发现MySQL中已经存在一个BugReport,但是由于“预期行为”而被关闭: https://bugs.mysql.com/bug.php?id=80052 此处引用为:https://stackoverflow.com/a/35042002/2889265

现在我的问题是,如何在 Locations 中实现一个字段,可以使用主键填充对 Pictures 中一​​行的引用。但这不是必须填写。该字段可能保持为空,或者稍后更新为空。 (不需要显示位置)

如果图片中的该行被删除,位置中的列应自动重置为NULL(就像我期望ON DELETE SET NULL函数一样)?我是否必须构建触发器或类似的东西才能实现我的预期行为。


环境:
  开发人员:MariaDB 10.3.15
  产品:MySQL 8.0.2

luopeng188020 回答:MySQL外键ON DELETE SET NULL

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138939.html

大家都在问