获取最新插入的记录主键
当向数据库插入一条新记录后通常都需要获取新记录的主键.而每种数据库的主键生成策略都不同.
一般来讲, 如果让数据库来维护主键, 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 @@IDENTITYPostgreSQLSELECT nextval('<TABLE>_SEQ')DB2 IDENTITY_VAL_LOCAL()Informix SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>Sybase SELECT @@IDENTITYHsqlDB CALL IDENTITY()CloudscapeIDENTITY_VAL_LOCAL()Derby IDENTITY_VAL_LOCAL()
使用以上语句查询时, 必须保证与 插入语句在同一个 Connection 中
页:
[1]