如果我有insert查询,例如:
INSERT INTO user(username) VALUES('admin');
然后用
LAST_INSERT_ID();
查找但如果在插入和最后一个插入之间执行另一个插入,会发生什么。mysql如何知道返回正确的id(对于第一个或第二个insert),因为没有参数传递给最后一个_insert_id();使用这个功能是否省钱?谢谢
jjjwad0x1#
如果使用一个insert查询将多行插入表中,则last\ insert\ id函数将返回第一行的最后一个insert id。即如果您的表id有3作为列值,并且您将在一个查询中插入4行,那么最后一个插入id将为您提供4而不是7如果在4个不同的insert查询中插入4行,那么最后一个insert id将为7
f8rj6qna2#
我假设你的意思是,如果我连接到mysql服务器并执行insert,但其他人也在执行insert,比如在客户端当前使用时更新网站上的表。如果你去看看文件https://dev.mysql.com/doc/refman/8.0/en/information-functions.html 有一点可以回答你的问题:生成的id在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的自动增量列的最新语句生成的第一个自动增量值。此值不受其他客户端的影响,即使它们生成自己的自动增量值。这种行为确保每个客户机都可以检索自己的id,而不必关心其他客户机的活动,也不需要锁或事务。这在mariadb中应该是相同的。正如在评论中所讨论的,您想知道是否可以在phppdo环境中使用它。如果您想直接从数据库中使用它,那么它是否定的,您将无法拥有最后插入的id,因为您将没有与pdo相同的客户端连接。如果您想直接从pdo使用它,请使用特定的pdo函数:http://php.net/manual/fr/pdo.lastinsertid.php ,这应该允许你做你想做的事。
z9smfwbn3#
last_insert_id( ) 或者 mysqli_insert_id( ) 将始终返回 id 最后一次或最近一次的查询。还需要注意的是 id 字段必须启用自动增量。它不能让你自由选择任何特定的表格。或者你不能 id 它是根据您以前的查询生成的。所以,从这一点来说,它的作用很小。只有最后一个 id ,哪张table不重要。最后一个 id 从任何特定的表中,此查询都会很有帮助: "SELECT id FROM table_name ORDER BY id DESC LIMIT 1"
last_insert_id( )
mysqli_insert_id( )
id
"SELECT id FROM table_name ORDER BY id DESC LIMIT 1"
3条答案
按热度按时间jjjwad0x1#
如果使用一个insert查询将多行插入表中,则last\ insert\ id函数将返回第一行的最后一个insert id。即
如果您的表id有3作为列值,并且您将在一个查询中插入4行,那么最后一个插入id将为您提供4而不是7
如果在4个不同的insert查询中插入4行,那么最后一个insert id将为7
f8rj6qna2#
我假设你的意思是,如果我连接到mysql服务器并执行insert,但其他人也在执行insert,比如在客户端当前使用时更新网站上的表。
如果你去看看文件https://dev.mysql.com/doc/refman/8.0/en/information-functions.html 有一点可以回答你的问题:
生成的id在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的自动增量列的最新语句生成的第一个自动增量值。此值不受其他客户端的影响,即使它们生成自己的自动增量值。这种行为确保每个客户机都可以检索自己的id,而不必关心其他客户机的活动,也不需要锁或事务。
这在mariadb中应该是相同的。
正如在评论中所讨论的,您想知道是否可以在phppdo环境中使用它。如果您想直接从数据库中使用它,那么它是否定的,您将无法拥有最后插入的id,因为您将没有与pdo相同的客户端连接。如果您想直接从pdo使用它,请使用特定的pdo函数:http://php.net/manual/fr/pdo.lastinsertid.php ,这应该允许你做你想做的事。
z9smfwbn3#
last_insert_id( )
或者mysqli_insert_id( )
将始终返回id
最后一次或最近一次的查询。还需要注意的是id
字段必须启用自动增量。它不能让你自由选择任何特定的表格。或者你不能
id
它是根据您以前的查询生成的。所以,从这一点来说,它的作用很小。只有最后一个
id
,哪张table不重要。最后一个
id
从任何特定的表中,此查询都会很有帮助:"SELECT id FROM table_name ORDER BY id DESC LIMIT 1"