MySQLのLAST_を使うINSERT_ID--回転
1795 ワード
LAST_INSERT_ID
最後のINSERTまたはUPDATE操作を自動的にAUTO_に戻すINCREMENT列の最初に発生する値を設定する.参照ここ
The ID that was generated is maintained in the server on a per-connection basis.
LAST_INSERT_IDは単一の接続に基づいており,他のクライアント接続によって変更されることは不可能である.
SELECTでLAST_INSERT_ID(); クエリLAST_INSERT_IDの値
Important: If you insert multiple rows using a single
単一INSERT文を使用して複数のレコードを挿入し、LAST_INSERT_IDは、挿入する第1のレコードの値のみを返す.たとえば
mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc'); mysql> SELECT * FROM t;
+----+------+ | id | name |
+----+------+ | 1 | Bob |
| 2 | aaaa | | 3 | bbbb |
| 4 | cccc | +----+------+
mysql> SELECT LAST_INSERT_ID(); +------------------+
| LAST_INSERT_ID() | +------------------+
| 2 | +------------------+
ID 2は、第1のレコードaaaを挿入する際に発生する.
LAST_INSERT_IDはtableに関係なく、テーブルaにデータを挿入した後、テーブルbにデータを挿入すると、LAST_INSERT_IDが変わります.
一般に挿入したばかりのデータのidを取得するにはselect max(id)from tableを用いることができる.
しかし、マルチスレッドの場合、だめです.マルチユーザが交互にデータを挿入する場合max(id)は明らかに使用できない.
これはLAST_を使うべきですINSERT_IDとか、LAST_INSERT_IDはConnectionベースで、各スレッドが独立したConnectionオブジェクトを使用する限り、LAST_INSERT_ID関数は、接続ペアAUTO_を返します.INCREMENT列の最新のinsert or update操作で生成された最初のレコードのID.この値は他のクライアント(Connection)に影響されず、他のクライアントのアクティビティを心配せずに自分のIDを取り戻すことができ、ロックをかける必要がないことを保証します.
原文:http://wangcheng.iteye.com/blog/54293
最後のINSERTまたはUPDATE操作を自動的にAUTO_に戻すINCREMENT列の最初に発生する値を設定する.参照ここ
The ID that was generated is maintained in the server on a per-connection basis.
LAST_INSERT_IDは単一の接続に基づいており,他のクライアント接続によって変更されることは不可能である.
SELECTでLAST_INSERT_ID(); クエリLAST_INSERT_IDの値
Important: If you insert multiple rows using a single
INSERT
statement, LAST_INSERT_ID()
returns the value generated for the first inserted row only. 単一INSERT文を使用して複数のレコードを挿入し、LAST_INSERT_IDは、挿入する第1のレコードの値のみを返す.たとえば
mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc');
+----+------+
+----+------+
| 2 | aaaa |
| 4 | cccc |
mysql> SELECT LAST_INSERT_ID();
| LAST_INSERT_ID() |
| 2 |
ID 2は、第1のレコードaaaを挿入する際に発生する.
LAST_INSERT_IDはtableに関係なく、テーブルaにデータを挿入した後、テーブルbにデータを挿入すると、LAST_INSERT_IDが変わります.
一般に挿入したばかりのデータのidを取得するにはselect max(id)from tableを用いることができる.
しかし、マルチスレッドの場合、だめです.マルチユーザが交互にデータを挿入する場合max(id)は明らかに使用できない.
これはLAST_を使うべきですINSERT_IDとか、LAST_INSERT_IDはConnectionベースで、各スレッドが独立したConnectionオブジェクトを使用する限り、LAST_INSERT_ID関数は、接続ペアAUTO_を返します.INCREMENT列の最新のinsert or update操作で生成された最初のレコードのID.この値は他のクライアント(Connection)に影響されず、他のクライアントのアクティビティを心配せずに自分のIDを取り戻すことができ、ロックをかける必要がないことを保証します.
原文:http://wangcheng.iteye.com/blog/54293