我试图使我正在处理的项目的数据库表保持良好和规范化,但我遇到了问题。我试图弄清楚如何在表中插入一行,然后找出 auto_incremented 的值id
列设置为以便我可以将附加数据插入到另一个表中。我知道有这样的功能mysql_insert_id
其中“获取从先前的 INSERT 操作生成的 ID”。不过,如果我没记错的话mysql_insert_id
只返回最后一次操作的 ID。因此,如果站点有足够的流量,则不一定会返回所需查询的 ID,因为在插入行和查找 ID 之间可能已经运行了另一个查询。这样的理解是不是mysql_insert_id
正确的?非常感谢任何有关如何执行此操作的建议。谢谢。
LAST_INSERT_ID()
有会话范围。
它将返回插入当前会话中的标识值。
如果您不在之间插入任何行INSERT
and LAST_INSERT_ID
,然后就可以正常工作了。
但请注意,对于多个值插入,它将返回插入的第一行的标识,而不是最后一行的标识:
INSERT
INTO mytable (identity_column)
VALUES (NULL)
SELECT LAST_INSERT_ID()
--
1
INSERT
INTO mytable (identity_column)
VALUES (NULL), (NULL)
/* This inserts rows 2 and 3 */
SELECT LAST_INSERT_ID()
--
2
/* But this returns 2, not 3 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)