如何取得刚插入数据库的数据的id m…
来源:互联网 发布:天堂ii mac 编辑:程序博客网 时间:2024/05/22 13:06
(原)
两条SQl语句
第一步 insert 语句
第二步 根据插入字段查询出id
即 select id from tab where(关键条件,确保几个条件的组合是唯一的)
(转)
转自于:http://hi.baidu.com/hlz_1987/blog/item/99b27faff0b82ce6faed50e0
插入后用
SELECT
获得刚插入的id号,多客户端并发插入对取到的id号不会有问题,因为各线程独立。
,我也查到一种方法:
select
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数,
一般情况下获取刚插入的数据的id,使用select max(id) from table是可以的。
但在多线程情况下,就不行了。
下面介绍三种方法
(1) getGeneratedKeys()方法:
程序片断:
Connection conn = ;
(2)LAST_INSERT_ID:
LAST_INSERT_ID是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。
在多用户交替插入数据的情况下max(id)显然不能用。
这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert orupdate*作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录,
(3)select @@IDENTITY:
String sql="select @@IDENTITY";
@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select@@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select@@identity的时候连接没有关闭,否则得到的将是NULL值。
注:在java中使用last_insert_id();是要在一插入后就使用,也就是不能新建立Connection
比如insert建了一个Connection,用last_insert_id()就要用同一个Connection,不能在两条查询语句(即“insertinto。。。”和"selectlast_insert_id()")都使用getConn()创建新管道,正确的做法是insert语句getConn()创建了管道以后,"selectlast_insert_id()"就直接用全局变量的conn也就是创建好的同一管道查询才有效果,否则会返回0得不到新插入的自动增长列列号,切忌!!!!!!!!!
- 如何取得刚插入数据库的数据的id m…
- 取得刚插入的数据ID
- 取得刚插入的数据ID
- PHP 取得刚插入数据的ID
- PHP取得刚插入数据的ID 并将这个ID插入到别的表
- SQLServer 如何获取刚插入数据的Id号
- SQLServer 如何获取刚插入数据的Id号
- SQLServer 如何获取刚插入数据的Id号
- 使用mybatis, 如何获取刚插入数据的id
- JDBC取得刚插入的自增长列的ID
- 获得刚插入的数据的 ID
- 返回刚插入数据的ID值
- SQL 返回刚插入数据的ID
- MyBatis取得新插入数据的ID
- MyBatis取得新插入数据的ID
- MyBatis取得新插入数据的ID
- 如何取得当前插入记录的ID
- 在SQLServer/MySQL数据库中如何取得刚插入的标识值
- 读取数据库中的数据到xml java
- java 获取 系统时间 Calendar
- java xml文件操作(转)
- Eclipe 快捷键(转)
- Eclipse 设置(转)
- 如何取得刚插入数据库的数据的id m…
- mysql 时间函数 操作 很强 上(转…
- mysql 时间操作 下 很强 (转)
- mysql字符问题
- java.lang.OutOfMemoryError处理错误
- Tomcat:IOException while …
- java 正则式
- 关于管理者应该拥有的的六十…
- js 转换文本框的值(转)