MySQL外键ON DELETE SET NULL

时间:2019-11-08 09:50:02

标签: mysql sql foreign-keys constraints

我想使用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

0 个答案:

没有答案