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