我的数据库中有两个表:'故事'和'投票'。
故事表包含有关文章的所有信息(例如标题,正文,作者姓名等)。 投票表包含所有文章的所有投票。 投票中有一个名为 item_name 的字段,其中包含投放投票的文章的 id 。
简单来说,投票中的 item_name 等于投票中的 id (具体取决于哪篇文章a用户投票)。
问题是:如果文章被删除,我该如何自动删除投票表中与该文章相关的所有记录?
可以在数据库中设置,所以不需要设置其他PHP查询吗?
这是我的数据库结构:
故事
票
答案 0 :(得分:6)
MySQL有不同的存储引擎。在大多数MySQL管理IDE中,默认存储引擎为MyISAM
。如果您对表使用此存储引擎,则无法在列之间创建任何关系,您必须自己删除相关列。
对于您想要的,innoDB
是最佳解决方案。这种类型的存储引擎使情况在不同表的列之间创建关系。您需要在表格中使用主键和外键,并且在创建这些关系后,您必须为它们指定以下功能:
ON UPDATE CASCADE
和ON DELETE CASCADE
因此,删除主记录后,您无需删除相关的列值。
看一下this link,在基准测试中对它们进行比较。
答案 1 :(得分:2)
在删除时级联设置相关字段的外键。
也许某人能够给你一个更详细的答案,但你必须使用支持外键的引擎(如InnoDB),如果你不知道怎么做,PHPMyAdmin应该帮助你完成其余的工作。用手。
简单地说,在字段上设置删除级联会告诉数据库删除具有该约束的每个记录,在您的情况下,文章(在另一个表上)将被删除。
有关详细信息,请参阅此处:
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html