电视节目数据库:删除显示有外国季节

时间:2012-11-23 13:05:59

标签: php mysql

我正在为我的电视连续剧网站建立一个后面板,我有两张桌子。一个叫做节目,另一个叫季节。

结构: 显示 - show_id PKshow_title

季节 - season_id PKshow_id(外键),season

我在后端的表格中列出所有电视节目名称并带有删除按钮但是当我按删除时它不会删除该节目,因为它也附有季节。如果我尝试删除没有附加季节的节目,则将其从数据库中删除没有问题。

我的代码在remove.php上显示如下:

$id=$_GET['id'];

// Delete show
$sql="DELETE FROM shows WHERE shows_id='$id'";

$result=mysql_query($sql);

我猜我也需要删除分配给同一节目的季节,但我不确定如何去做这件事。

2 个答案:

答案 0 :(得分:1)

$id=$_GET['id'];

// Delete all seasons for this show first.
$sql="DELETE FROM seasons WHERE show_id='$id'";

// Now, Delete show
$sql="DELETE FROM shows WHERE id='$id'";

答案 1 :(得分:1)

如果你在你的MySQL表中使用InnoDB,如果你检查/更改了外键的约束,那么生活对你来说真的很简单。

更改这些取决于您的设置方式,无论您是使用命令行界面还是某些GUI来管理数据库。

但是当你在season表中创建了外键字段时,你就设置了约束。如果您将该约束更新为如下:

更新:什么都不做 \\开始删除:级联

现在,每当您从节目中删除一行时,由于级联规则,任何存在的相关季节行都将被自动删除。非常有用,也是设置规范化数据库的必要条件。

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html