读书人

获取最新安插的记录主键

发布时间: 2012-08-25 10:06:20 作者: rapoo

获取最新插入的记录主键
当向数据库插入一条新记录后通常都需要获取新记录的主键.

而每种数据库的主键生成策略都不同.

一般来讲, 如果让数据库来维护主键, 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 DUALMySQL       SELECT LAST_INSERT_ID()SqlServer   SELECT SCOPE_IDENTITY()或SELECT @@IDENTITYPostgreSQL  SELECT nextval('<TABLE>_SEQ')DB2         IDENTITY_VAL_LOCAL()Informix    SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>Sybase      SELECT @@IDENTITYHsqlDB      CALL IDENTITY()Cloudscape  IDENTITY_VAL_LOCAL()Derby       IDENTITY_VAL_LOCAL()


使用以上语句查询时, 必须保证与 插入语句在同一个 Connection 中

读书人网 >其他数据库

热点推荐