2

我正在为我的电视剧网站构建一个背板,我有 2 张桌子。一个叫节目,另一个叫季节。

结构:显示 - show_id PK,show_title

季节 - season_id PK, show_id(外键),season

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

我的代码在 remove.php 上看起来像这样:

$id=$_GET['id'];

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

$result=mysql_query($sql);

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

4

2 回答 2

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'";
于 2012-11-23T13:10:42.913 回答
1

如果您将 InnoDB 用于您的 MySQL 表,那么如果您检查/更改了外键上的约束,那么您的生活可能会非常简单。

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

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

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

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

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

于 2012-11-23T13:32:08.967 回答