获取最新插入的记录主键
当向数据库插入一条新记录后通常都需要获取新记录的主键.
而每种数据库的主键生成策略都不同.
一般来讲, 如果让数据库来维护主键, MySQL 和 SQL Server 为自动增长, Oracle 使用序列
若使用 Hibernate , 其 save() 方法会返回一个 Serializable. 此值为 持久化标识(identifier) 即主键对应的属性.
merge() 方法将 持久化的对象 整个返回.
若使用 jdbc , 可以使用 Statement 的 getGeneratedKeys() 方法获取最新插入数据的结果集.
但要保证一点, 必须与 insert 语句在同一个 Connection 中. 具体情况查看 Statement API 帮助的 executeUpdate(sql, Statement.RETURN_GENERATED_KEYS) 和 getGeneratedKeys() 方法说明;
若数据库驱动程序不支持上面的方法. 那就只能使用数据库本身的方法了
统计了一下:Oracle SELECT sequence.currval FROM DUAL
MySQL SELECT LAST_INSERT_ID()
SqlServer SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY
PostgreSQL SELECT nextval('<TABLE>_SEQ')
DB2 IDENTITY_VAL_LOCAL()
Informix SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>
Sybase SELECT @@IDENTITY
HsqlDB CALL IDENTITY()
Cloudscape IDENTITY_VAL_LOCAL()
Derby IDENTITY_VAL_LOCAL()
使用以上语句查询时, 必须保证与 插入语句在同一个 Connection 中