MySQL的LAST_INSERT_ID用法_MySQL

Jun 01, 2016 pm 01:40 PM
お問い合わせ

bitsCN.com
MySQL的LAST_INSERT_ID用法 LAST_INSERT_ID() 自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列设置的第一个表发生的值。MySQL 的LAST_INSERT_ID 的注意事项:第一 、查询和插入所使用的Connection对象必须是同一个才可以,否则返回值是不可预料的。mysql> SELECT LAST_INSERT_ID();        -> 100使用这函数向一个给定Connection对象返回的值是该Connection对象产生对影响AUTO_INCREMENT列的最新语句第一个AUTO_INCREMENT值的。这个值不能被其它Connection对象的影响,即它们产生它们自己的AUTO_INCREMENT值。    第二 、LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。第三 、 假如你使用一条INSERT语句插入多个行,  LAST_INSERT_ID() 只返回插入的第一行数据时产生的值。其原因是这使依靠其它服务器复制同样的 INSERT语句变得简单。mysql> INSERT INTO t VALUES    -> (NULL, ‘Mary’), (NULL, ‘Jane’), (NULL, ‘Lisa’);mysql> SELECT * FROM t;| id | name |+—-+——+|  1 | Bob  ||  2 | Mary ||  3 | Jane ||  4 | Lisa |mysql> SELECT LAST_INSERT_ID();  //这就是我要说明的关键问题。| LAST_INSERT_ID() ||                2 |虽然将3 个新行插入 t, 对这些行的第一行产生的 ID 为 2, 这也是 LAST_INSERT_ID()返回的值。第四 、假如你使用 INSERT IGNORE而记录被忽略,则AUTO_INCREMENT 计数器不会增量,而 LAST_INSERT_ID() 返回0, 这反映出没有插入任何记录。    
 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。但在多线程情况下,就不行了。在多用户交替插入数据的情况下max(id)显然不能用。这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。LAST_INSERT_ID是基于单个connection的, 不可能被其它的客户端连接改变。
  bitsCN.com

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Xuexin.com で学歴を確認する方法 Xuexin.com で学歴を確認する方法 Mar 28, 2024 pm 04:31 PM

Xuexin.com で学歴を確認する方法

12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法 Mar 28, 2024 pm 03:11 PM

12306 過去のチケット購入記録の確認方法 過去のチケット購入記録の確認方法

Apple携帯電話でアクティベーション日を確認する方法 Apple携帯電話でアクティベーション日を確認する方法 Mar 08, 2024 pm 04:07 PM

Apple携帯電話でアクティベーション日を確認する方法

Oracle を使用してテーブルがロックされているかどうかをクエリするにはどうすればよいですか? Oracle を使用してテーブルがロックされているかどうかをクエリするにはどうすればよいですか? Mar 06, 2024 am 11:54 AM

Oracle を使用してテーブルがロックされているかどうかをクエリするにはどうすればよいですか?

MySQL と PL/SQL の類似点と相違点の比較 MySQL と PL/SQL の類似点と相違点の比較 Mar 16, 2024 am 11:15 AM

MySQL と PL/SQL の類似点と相違点の比較

通神コインの最新価格を確認するにはどうすればよいですか? 通神コインの最新価格を確認するにはどうすればよいですか? Mar 21, 2024 pm 02:46 PM

通神コインの最新価格を確認するにはどうすればよいですか?

データベースの場所のクエリに関するスキルの共有について話し合う データベースの場所のクエリに関するスキルの共有について話し合う Mar 10, 2024 pm 01:36 PM

データベースの場所のクエリに関するスキルの共有について話し合う

INJコインの最新価格を確認するにはどうすればよいですか? INJコインの最新価格を確認するにはどうすればよいですか? Mar 06, 2024 pm 05:00 PM

INJコインの最新価格を確認するにはどうすればよいですか?

See all articles