2010-05-16 142 views
2

我有两个表,每个使用其他主键作为外键。两者的主键都设置为auto_increment自动增加主键(MySQL)的问题

问题是,当我尝试创建并进入其中一个表时,我不知道该条目的主键是什么,并且无法弄清楚如何将另一个表放入作为外键。我该怎么办?我是否完全放弃auto_increment并为每个条目制作一个唯一标识符,以便我可以使用它来处理创建的条目?我使用PHP,如果这是相关的。谢谢。

回答

4

每个主要数据库都提供了一种查找刚刚插入的记录的ID的方法;自动递增ID的想法在其他情况下不会非常有用。

在MySQL中,您可以使用mysql_insert_id()。请参阅PHP function of the same nameMySQL function

+0

但是,如果在很短的时间内有很多插入物,这会不会成为问题?它会发送另一个条目的ID吗?谢谢。 – mathon12 2010-05-16 14:17:23

+0

如果要插入两个记录,一个参考,另外,你必须确保他们在彼此之后立即插入,或记录'mysql_insert_id()'的第一条记录,并保存它,如果你不能插入第二个记录马上。 – meagar 2010-05-16 14:19:33

+0

@ mathon12 nope。 – 2010-05-16 14:23:37

0

您可以使用此功能:为了得到最后插入的ID

+0

谢谢,应该这样做。 – mathon12 2010-05-16 14:29:36

0

的初始插件后mysql_insert_id,该mysql_insert_id()函数将返回值自动增量的ID,这样就可以在接下来的插入使用它

+0

谢谢。我会研究它:) – mathon12 2010-05-16 14:17:59

1

mysql_insert_id可以为您提供自动增量主键的最后生成值的值。

如果您使用PDO(您应该),您可以改为使用PDO::lastInsertId()。这适用于PDO支持的所有数据库系统。

+0

以前从未使用过PDO。有趣的是PostgreSQL有一个复出关键字,这是非常方便的,它似乎。 – mathon12 2010-05-16 14:26:00