state.executeUpdate(); rs = state.getGeneratedKeys(); if (rs.next()) { ret = (Serializable) rs.getObject(1); }
也可以:
select @@identity
@@identity 是表示的是最近一次向具有 identity 属性(即自增列)的表插入数据时对应的自增列的值,是系统定 义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表 A,它的自增列是 id,当向 A 表插入一行数据后,如果插入数据 后自增列的值自动增加至 101,则通过select @@identity得到的值就是 101。使用@@identity的前提是在进行 insert 操作后,执行 select @@identity 的时候连接没有关闭,否则得到的将是 NULL 值。
还可以:
SELECT LAST_INSERT_ID();
1. 每次 mysql 的 query 操作在 mysql 服务器上可以理解为一次“原子”操作, 写操作常常需要锁表, 这里的锁表是 mysql 应用服务器锁表不是我们的应用程序锁表。
2. 因为 LAST_INSERT_ID 是基于 Connection 的,只要每个线程都使用独立的 Connection 对象,LAST_INSERT_ID 函数 将返回该 Connection 对 AUTO_INCREMENT列 最新的 insert or update* 作生成的第一个 record 的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT 语句插入多条记录, LAST_INSERT_ID 返回一个列表。
3. LAST_INSERT_ID 是与 table 无关的,如果向表 a 插入数据后,再向表 b 插入数据,LAST_INSERT_ID 会改变。
0条评论
点击登录参与评论