自增主键问题(MySQL)
我有两个表,每个表都使用对方的主键作为外键。两者的主键都设置为 auto_increment
。
问题是,当我尝试创建并输入其中一个表时,我不知道该条目的主键是什么,也无法弄清楚将什么作为外键放入另一个表中。我应该怎么办?我是否完全放弃 auto_increment 并为每个条目创建一个唯一标识符,以便我可以使用它来寻址创建的条目?我正在使用 PHP,如果相关的话。谢谢。
I have 2 tables each using other's primary key as a foreign key. The primary keys for both are set to auto_increment
.
The problem is, when I try to create and entry into one of the tables, I have no idea what the primary key of the entry is and can't figure out what to put in the other table as a foreign key. What should I do? Do I drop auto_increment altogether and cook up a unique identifier for each entry so I can use it to address the created entries? I'm using PHP, if that's relevant. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
每个主要数据库都提供了查找刚刚插入的记录 ID 的方法;否则,自动递增 ID 的想法就不会很有用。
在 MySQL 中,您可以使用 mysql_insert_id()。请参阅 同名 PHP 函数 或 MySQL 函数 它环绕。
Every major database going provides a means of finding the ID of the record you just inserted; the idea of auto-incremented IDs wouldn't be very useful otherwise.
In MySQL, you can use
mysql_insert_id()
. See the PHP function of the same name or the MySQL function it wraps around.mysql_insert_id 可以给你最后生成的值自增主键的值。
如果您正在使用 PDO(您应该这样做),您可以使用 PDO::而是使用lastInsertId()。这适用于 PDO 支持的所有数据库系统。
mysql_insert_id can give you the value of the last generated value of an autoincrement primary key.
If you're using PDO (which you should), you can use PDO::lastInsertId() instead. This will work for all database systems that are supported by PDO.
您可以使用此函数: mysql_insert_id 来获取最后插入的 ID
You can use this function: mysql_insert_id in order to get the last id inserted
初始插入后, mysql_insert_id() 函数将返回自动递增的 id 值,以便您可以在下一次插入中使用它
After the initial insert, the mysql_insert_id() function will return the autoincremented id value so that you can use it in the next insert