插入两个相互依赖的行的最有效方法

时间:2009-11-21 11:45:08

标签: php mysql database-design data-structures

我有一个基本上是链接集合的网站。存储用户,链接和投票的mysql数据库。我的链接表有两个外键,user_id和vote_id。当链接插入到数据库中时,它将以一个投票开始,这意味着我需要在投票表中插入一行,但它们基本上彼此依赖存在。我需要投票表的外键链接的ID,反之亦然。我当前的“计划”是插入一个vote_id为0的链接行,选择相同的行来获取它的ID,然后使用链接行id插入一个投票行作为它的外键,选择它的ID并更新我的原始链接行。这看起来效率非常低,但我需要确保记录用户投票以保留时间并消除重复投票。我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在PHP中,您可以使用mysql_insert_id

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());

您可以使用它来获取新插入链接的行ID。

假设一个投票只能属于一个链接,则链接表不应该有一个vote_id列。所以你不应该需要新插入的投票的身份。