mysql LAST_INSERT_ID详解

转:http://blog.sina.com.cn/s/blog_5b5460eb0100nwvo.html

LAST_INSERT_ID() LAST_INSERT_ID(expr)

自动返回最后一个INSERT UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值。

mysql> SELECT LAST_INSERT_ID();

        -> 195

产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。(因为last_insert_id是针对connection的)

假如你使用一个非“magic”值来更新某一行的AUTO_INCREMENT 列,则LAST_INSERT_ID() 的值不会变化(换言之, 一个不是 NULL也不是 0的值)

重点: 假如你使用单INSERT语句插入多个行,  LAST_INSERT_ID() 返回插入的第一行产生的值。其原因是这使依靠其它服务器复制同样的 INSERT语句变得简单。

例如:

mysql> USE test;
Database changed
mysql> CREATE TABLE t (
    ->   id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->   name VARCHAR(10) NOT NULL
    -> );

mysql> INSERT INTO t VALUES (NULL, 'Bob');

mysql> SELECT * FROM t;
+----+------+| id | name |
+----+------+ 1 | Bob  |

mysql> SELECT LAST_INSERT_ID();
     -> 1;
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();
    ->2;

虽然第二个问询将3 个新行插入 t, 对这些行的第一行产生的 ID  2, 这也是 LAST_INSERT_ID()返回的值。

假如你使用 INSERT IGNORE而记录被忽略,则AUTO_INCREMENT 计数器不会增量,而 LAST_INSERT_ID() 返回0,这反映出没有插入任何记录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL INSERT INTO 是一种用于将新行插入表中的 SQL 命令。它是 MySQL 数据库中非常重要的一种语句,也是许多应用程序的核心功能之一。INSERT INTO 的基本语法是将要插入的数据按照表的列顺序依次列出,并使用关键字 VALUES 来指定要插入的具体数值。例如,假设有一个名为 employees 的表格,包含 id、first_name、last_name、hire_date、gender 和 birth_date 等列,可以使用以下语句向表中插入新行: INSERT INTO employees (id, first_name, last_name, hire_date, gender, birth_date) VALUES (1, 'John', 'Doe', '2023-06-06', 'M', '1990-01-01'); 这个语句将在 employees 表中插入一行数据,其中 id 为 1,first_name 为 'John',last_name 为 'Doe',hire_date 为 '2023-06-06',gender 为 'M',birth_date 为 '1990-01-01'。通过类似的方式,可以插入更多的行数据。 需要注意的是,在使用 INSERT INTO 时,需要确保插入的数据类型与表的列定义相匹配,否则可能会导致插入失败或数据错误。此外,还需要注意处理异常情况,以避免程序出现错误。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [MySQLINSERT INTO 的使用详解](https://blog.csdn.net/weixin_65846839/article/details/131061314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值