您的位置:首页 > 数据库 > MySQL

MySQL 自增ID值 获取的方法

2017-05-27 14:47 399 查看
 如何获取 MYSQL中某个表的自增ID字段的下一个值 ?

方法一: 

例如:在zx_ofc.task_order表中task_id是自增字段。

它的下一个自增字段可以通过下面的语句获得

SELECT `AUTO_INCREMENT` FROM  INFORMATION_SCHEMA.TABLES 

WHERE TABLE_SCHEMA = 'zx_ofc' AND  TABLE_NAME  = 'task_order';

该数值其实就是下面SQL语句执行后输出的数值 + 1.

select max(zx_ofc.task_order.task_id) from zx_ofc.task_order;

方法二:

SHOW TABLE STATUS;

得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID。

如何返回插入数据后的那个自增ID字段的值?

方法:使用  last_insert_id() 函数。

SQL例子如下:

下面的这个表初始空的,执行下面的语句系列。

insert into thb_test(keyword1) VALUES("thb");

select last_insert_id(); 

//输出值为1

1

//意味最后一条SQL插入语句的自增ID是1

我们再来执行多条insert语句,看看结果如何。

insert into thb_test(keyword1) VALUES("bill");

insert into thb_test(keyword1) VALUES("bigtree");

select last_insert_id(); 

//输出数值为3,意味最后一条SQL插入语句的自增ID是3

3

上面例子说明 执行两个insert语句,last_insert_id()返回最后一个插入语句的结果。

mysql> select @@version;

+------------+

| @@version  |

+------------+

| 5.5.24-log |

+------------+

1 row in set (0.17 sec)

我在 Mysql 5.5.24上验证过了:last_insert_id()返回最后一个插入语句的自增结果。

网络上的说法:
”如果一句INSERT插入多条,返回的是第一个ID”  需要解释下。

即如果用一条insert语句插入了多条语句,则该函数会返回第一个ID。
在下面的 MySQL  官方文档中,有下面的解释,注意下绿色背景的SQL语句
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id
mysql> [code]USE test;

Database changed
mysql>
CREATE TABLE t (

->
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

->
name VARCHAR(10) NOT NULL

->
);

Query OK, 0 rows affected (0.09 sec)

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

Query OK, 1 row affected (0.01 sec)

mysql>
SELECT * FROM t;

+----+------+
| id | name |
+----+------+
| 1 | Bob |
+----+------+
1 row in set (0.01 sec)

mysql>
SELECT LAST_INSERT_ID();

+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)

mysql>
INSERT INTO t VALUES

->
(NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');

Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
| 1 | Bob |
| 2 | Mary |
| 3 | Jane |
| 4 | Lisa |
+----+------+
4 rows in set (0.01 sec)

mysql>
SELECT LAST_INSERT_ID();

+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)[/code]
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: