SQL或PHP级联更新和删除

时间:2011-09-18 22:33:39

标签: php mysql function triggers

我正在创建一个系统,您可以将照片上传到图库,然后您可以为该图库添加名称和说明,并将其与您想要的许多图像相关联。我正在使用MySQL和PHP来实现这一目标。然而,我有点困境,那就是我想允许用户,如果他们选择,删除所有与图库搭配的图像,如果他们删除图库,或将图像设置为其他默认图库。

我设置数据库的方式是使用两个表,一个是图像表,其中包含图像名称,描述,实际图像名称(表示.jpeg图像)和图库ID字段。 gallery表包含名称,描述和它自己的id。

我最近刚学到了一些关于使用外键的级联触发器,但我不太了解它们是如何工作的,所以我不确定这是否可以解决这个问题。我的主要目标是允许用户删除图库并让图像表中的所有图库ID更新,并删除所有这些图像。如果没有办法用SQL做到这一点,我怎么能用PHP做到这一点?我试图弄明白,并得出结论,我可能不得不使用某种循环。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果有人要求删除其中一个图库并且ID为“34”,则可以

$gId = 34;
$query = 'DELETE FROM `images` WHERE `gallery_id` = $gId';
$res   = mysql_query($query);

// or assign to new gallery
$gId    = 34;
$newGid = 5;
$query  = 'UPDATE `images` set `gallery_id` = $newGid WHERE `gallery_id` = $gId';
$res    = mysql_query($query);

如果您在MySQL 5.5中使用InnoDB表,则可以看到文档here,解释如何使用约束来实现级联删除或更新。