(2)一次同时插入多条记录
接下来,向表中插入多条记录
INSERT INTO worker VALUES(NULL,'kevin'),(NULL,'michal'),(NULL,'nick')
查询已经插入的记录
SELECT * FROM worker
可以看到最后一条记录的ID字段值为5,使用LAST_INSERT_ID()查看最后自动生成的ID值
SELECT LAST_INSERT_ID()
结果显示,ID字段值不是5而是3,这是为什麽呢?
在向数据表插入一条记录时,LAST_INSERT_ID()返回带有AUTO_INCREMENT约束的字段最新生成的值2;继续向表
中同时添加3条记录,这时候因为当使用一条INSERT语句插入多个行时,LAST_INSERT_ID只返回插入的第一行数据
时产生的值,在这里为第3条记录。之所以这样,是因为这使依靠其他服务器复制同样的INSERT语句变得简单
TIPS:LAST_INSERT_ID是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的ID值
这里跟SQLSERVER不一样
使用下面脚本来测试,无论使用方式一还是方式二,当前的LAST_INSERT_ID都是最后一个值
CREATE TABLE [dbo].[aaa]( [a] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [name] [nvarchar](50) NOT NULL ) ON [PRIMARY]