last_insert_id()好像值针对当前表起做用。 last_insert_id()是客户机专用的。例如:create table seq(seql int unsigned not null) insert into seq values(0) update seq set seql=last_insert_id(seql+1)
同一个连接会话在向一个自增字段里插入一个数据后, 用 LAST_INSERT_ID() 所得到的就是前一插入语句的自增值, 这个值是在服务器端维护的, 其它用户插入新数据不会影响到该连接用户使用该函数所得返回值,你可以运行两个 mysql.exe 来建立两个连接会话 A B | INSERT INTO `tA` SET id = NULL; | 时 SELECT LAST_INSERT_ID(); INSERT INTO `tA` SET id = NULL; | 间 -> 1 | 顺 SELECT LAST_INSERT_ID(); SELECT LAST_INSERT_ID(); v 序 -> 1 -> 2 A 用户先插入一个记录 查询 LAST_INSERT_ID() 返回值 1 当 A 用户查询时,B 用户也插入了一个新记录, 在 B 插入新记录后,A 查询 LAST_INSERT_ID() 还是得 1, 而 B 用户查询 LAST_INSERT_ID() 得2 按时间 A 的先,所以 A 的为1 LAST_INSERT_ID() 顾名思义就是上一条插入时的ID 它不受其它用户的影响 你可以用 MySQL 客户端试一试, 方法如上
就是用
LAST_INSERT_ID();
这个SQL 函数
last_insert_id()是客户机专用的。例如:create table seq(seql int unsigned not null)
insert into seq values(0)
update seq set seql=last_insert_id(seql+1)
用 LAST_INSERT_ID() 所得到的就是前一插入语句的自增值,
这个值是在服务器端维护的,
其它用户插入新数据不会影响到该连接用户使用该函数所得返回值,你可以运行两个 mysql.exe 来建立两个连接会话 A B
| INSERT INTO `tA` SET id = NULL;
| 时 SELECT LAST_INSERT_ID(); INSERT INTO `tA` SET id = NULL;
| 间 -> 1
| 顺 SELECT LAST_INSERT_ID(); SELECT LAST_INSERT_ID();
v 序 -> 1 -> 2 A 用户先插入一个记录
查询 LAST_INSERT_ID() 返回值 1
当 A 用户查询时,B 用户也插入了一个新记录,
在 B 插入新记录后,A 查询 LAST_INSERT_ID() 还是得 1,
而 B 用户查询 LAST_INSERT_ID() 得2
按时间 A 的先,所以 A 的为1
LAST_INSERT_ID() 顾名思义就是上一条插入时的ID
它不受其它用户的影响
你可以用 MySQL 客户端试一试,
方法如上