外键约束Mysql

时间:2013-09-20 16:57:17

标签: mysql

我正在尝试在博客和图片之间建立一种关系,博客最多可以拥有一个图像(想像头像一样),但它也可以没有。因此,我把外键放在博客表上。我试图在图像表上创建约束,如果博客被删除,其关联的图像也会从数据库中删除。但是,当外键不在应该级联的表中时,我不确定如何创建约束。这是我的表格,减去那些不相关的字段:

CREATE TABLE `blogs` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `image_id` int(10) unsigned default NULL,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=921 DEFAULT CHARSET=utf8;

CREATE TABLE `images` (
  `id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=251021 DEFAULT CHARSET=utf8 

有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

将图像放在单独的表中的唯一原因是,如果多个博客可以共享相同的图像。在这种情况下,您不希望在级联上删除。你需要特殊的逻辑来确定是否有 no 博客留下引用该图像来删除它 - 这是你无法通过DDL做的事情。

相反,只需在blogs表上设置图像值为可为空的列。