高手请进,小妹有一问题。回者有赏。 插入完后执行一个这个语句 SELECT LAST_INSERT_ID();返回值就是你所要的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像有一个函数,你试一下,在插入数据后,直接运行:mysql_insert_id();返回的值就是最近插入的ID号 我这个是C/S的程序来的。但有个问题就是,当你在执select last_insert_ID() 时,别的用户同时也插入了一条新记录,那又怎么办呢?如果用lock来锁定表,难到要锁定数据库所有的表吗?各位,帮小妹一下吧!!! 如果你是用的PHP+MySQL的话,我刚才给你的那个函数就可以实现你要的 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) 的值。 建议看一看 MySQL 语言参考手册, 我是用VB+ADO+Mysql的。shuixin13(犬犬(心帆) 大哥,这样说在不同的客户端调用LAST_INSERT_ID([expr]) 其结果是不同的。 是的,在插入时你只要将这个字段值设为 NULL 即可,系统会自动分配一个 ID 给你然后你可以通过 LAST_INSERT_ID() 来获得它,它的值不会因在你插入记录行后,又有其它的用户插入而改变! shuixin13(犬犬(心帆) 多谢你啊!! MySQL 语言参考手册,在那里可以找得到? 在心帆哥的网站上www.mysqlcn.yeah.net,或www.pdown.net 请问再java中如何实现急问可不可以给个具体的思想方法如果你回答我的话还有机会得到100分哦 ^_^看“请问mySql中auto increment 的问题”一问 mysql 语句 mysql怎么判断时间大小啊? 怎么更改列名? 为什么用已经添加到MYSQL的新用户登陆不了MYSQL? 请问关于MYSQL的一个初级问题! mysql odbc 我想学习mysql请问初学者看哪本书好呢??? 求救:如何把MSSQL的数据库转换成MYSQL,谢谢 mysql -h remotehost -u root连不上对方机子? 求解答SQL面试的几道题 ■mysql如何实现字符型和整型连接成字符型■ 版主在不在线上???
mysql_insert_id();
返回的值就是最近插入的ID号
但有个问题就是,当你在执select last_insert_ID() 时,别的用户同时也插入了一条新记录,那又怎么办呢?
如果用lock来锁定表,难到要锁定数据库所有的表吗?
各位,帮小妹一下吧!!!
返回被插入到一个 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) 的值。
建议看一看 MySQL 语言参考手册,
shuixin13(犬犬(心帆)
大哥,这样说在不同的客户端调用LAST_INSERT_ID([expr]) 其结果是不同的。
在插入时你只要将这个字段值设为 NULL 即可,
系统会自动分配一个 ID 给你
然后你可以通过 LAST_INSERT_ID() 来获得它,
它的值不会因在你插入记录行后,又有其它的用户插入而改变!
多谢你啊!!
MySQL 语言参考手册,在那里可以找得到?
急问
可不可以给个具体的思想方法如果你回答我的话
还有机会得到100分哦 ^_^
看“请问mySql中auto increment 的问题”一问