如何从不同的MySQL表中删除所有相关记录

Ilj*_*lja 6 php mysql cascading-deletes

我的数据库中有两个表:' 故事 '和' 投票 '.
故事表包含有关物品(例如标题,正文,作者姓名等)的所有信息.该表包含所有文章的所有选票.投票中有一个名为item_name的字段,其中包含投票的文章的ID.

简单地说,ITEM_NAME等于ID故事(取决于哪个物品的用户投票).

问题是:如果文章被删除,我该如何自动删除投票表中与该文章相关的所有记录?

它可以在数据库中设置,因此不需要设置其他PHP查询吗?

这是我的数据库结构:

故事

在此输入图像描述


在此输入图像描述

Moh*_*eri 6

MySQL有不同的存储引擎.默认存储引擎MyISAM在大多数MySQL管理IDE中.如果对表使用此存储引擎,则无法在列之间创建任何关系,并且必须自行删除相关列.

对于你想要的,innoDB是最好的解决方案.这种类型的存储引擎使情况在不同表的列之间创建关系.您将需要表中的主键和外键,并且在创建这些关系后,您必须为它们指定以下功能:

ON UPDATE CASCADEON DELETE CASCADE

因此,删除主记录后,您不需要删除相关的列值.

看一下这个链接,在基准测试中对它们进行比较.