关于插入新行记录的问题 INSERT INTO .....SELECT LAST_INSERT_ID() 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 后来我单独写了LAST_INSERT_ID()这句,去掉了之前的insert语句,执行是没问题了。但是我插入一条语句后,再执行LAST_INSERT_ID()这条语句时,如果有别的用户刚好也向数据库插入一条新纪录,那执行LAST_INSERT_ID()我还能得到我插入的那条记录的id号吗? LAST_INSERT_ID([expr]) 返回被插入到一个 AUTO_INCREMENT 列中的最后一个自动产生的值。查看章节 8.1.3.130 mysql_insert_id()。 mysql> SELECT LAST_INSERT_ID(); -> 195最后产生的 ID 是以每个连接为基础在服务器端被维护的。它不可能被其它的客户端连接改变。如果你以一个非特殊值(即一个非 NULL 和非 0 的值)更新其它的 AUTO_INCREMENT,它甚至也不会改变。 如果你在同一时间内以一个插入语句插入了许多记录行,LAST_INSERT_ID() 将返回第一个被插入行的值。这样做的原因是因为,这可能列容易地在其它服务器上再现同一条 INSERT 语句。 如果 expr 被作为一个参数传递给 LAST_INSERT_ID(),那么函数将返回这个参数的值,并且被设置为 LAST_INSERT_ID() 返回的下一个值。这可被用于模拟一个序列: 首先创建一个表: mysql> CREATE TABLE sequence (id INT NOT NULL);mysql> INSERT INTO sequence VALUES (0);然后这个表可以被用来以下面的方式产生序列值: mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);你也可以不调用 LAST_INSERT_ID() 产生序列,但是以这种方式使用这个函数的作用就是,ID 值是在服务器端叙谈最后的自动产生值被维护的(是多用户安全的)。你可以检索这的新的 ID 值,就好像读取 MySQL 中任何正常的 AUTO_INCREMENT 值一样。举例来说,LAST_INSERT_ID()(无任何参数) 将返回一个新的 ID。C API 函数 mysql_insert_id() 也可以用来得到这个值。 注意,由于 mysql_insert_id() 仅仅只能用于在 INSERT 和 UPDATE 语句的更新之后,所以在执行了其它的 SQL 语句(比如 SELECT 或 SET)之后,你不能够使用 C API 函数检索到 LAST_INSERT_ID(expr) 的值。 SQL语句中不支持这样的写法to_date('JAN-01-2012', 'MM-dd-yyyy')? mysql_query返回1 如何把表里的数据分到多个表中去. 简单的判断插入存储过程 mysql 一个特殊字符的输入 在windows下面的一段 Mysql数据库自动备份的代码(附代码),有点疑问,请指点 如何解决mysql插入新纪录的重复问题 定时任务问题 时间相差问题 如何建立表的结构 装数据库多久?我这都等了半个多小时了,进度条一下不动。。。(还有小疑问请教) 哥哥姐姐们,帮妹妹个小忙,好吗? 高手请进,解决问题给100分
但是我插入一条语句后,再执行LAST_INSERT_ID()这条语句时,如果有别的用户刚好也向数据库插入一条新纪录,那执行LAST_INSERT_ID()我还能得到我插入的那条记录的id号吗?
mysql> SELECT LAST_INSERT_ID();
-> 195最后产生的 ID 是以每个连接为基础在服务器端被维护的。它不可能被其它的客户端连接改变。如果你以一个非特殊值(即一个非 NULL 和非 0 的值)更新其它的 AUTO_INCREMENT,它甚至也不会改变。 如果你在同一时间内以一个插入语句插入了许多记录行,LAST_INSERT_ID() 将返回第一个被插入行的值。这样做的原因是因为,这可能列容易地在其它服务器上再现同一条 INSERT 语句。 如果 expr 被作为一个参数传递给 LAST_INSERT_ID(),那么函数将返回这个参数的值,并且被设置为 LAST_INSERT_ID() 返回的下一个值。这可被用于模拟一个序列: 首先创建一个表:
mysql> CREATE TABLE sequence (id INT NOT NULL);
mysql> INSERT INTO sequence VALUES (0);然后这个表可以被用来以下面的方式产生序列值:
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);你也可以不调用 LAST_INSERT_ID() 产生序列,但是以这种方式使用这个函数的作用就是,ID 值是在服务器端叙谈最后的自动产生值被维护的(是多用户安全的)。你可以检索这的新的 ID 值,就好像读取 MySQL 中任何正常的 AUTO_INCREMENT 值一样。举例来说,LAST_INSERT_ID()(无任何参数) 将返回一个新的 ID。C API 函数 mysql_insert_id() 也可以用来得到这个值。 注意,由于 mysql_insert_id() 仅仅只能用于在 INSERT 和 UPDATE 语句的更新之后,所以在执行了其它的 SQL 语句(比如 SELECT 或 SET)之后,你不能够使用 C API 函数检索到 LAST_INSERT_ID(expr) 的值。