java如何在插入一行之后获取序列id?
我有一个表,在PostgreSQL中,行“id”(主键)默认设置为serial。我通过调用
session.getCurrentSession().createSQLQuery("some insert query")
不向id中添加任何值,因为它默认设置为串行
如何检索刚刚插入的行的“id”
你可以在下面搜索框中键入要查询的问题!
我有一个表,在PostgreSQL中,行“id”(主键)默认设置为serial。我通过调用
session.getCurrentSession().createSQLQuery("some insert query")
不向id中添加任何值,因为它默认设置为串行
如何检索刚刚插入的行的“id”
# 1 楼答案
JDBC语句can return the generated keys。例如,如果表中有一个类型为
serial
(可能是PK)的id
列,但在下面的insert SQL中没有提到,则该列的生成值可以通过以下方式获得:这比稍后发送第二个查询以获取序列值或最大列值要快。另外,根据具体情况,这两种其他解决方案可能不是线程安全的
# 2 楼答案
因为它是串行的,所以可以使用
select max(id) from tableName
在
posgresql
中:顺便说一句,已经有一个stackoverflow-question存在(还)
获取特定序列:
SELECT currval('name_of_your_sequence');
从使用的最后一个序列中获取最后一个值:
SELECT lastval();
手册:http://www.postgresql.org/docs/current/static/functions-sequence.html
对于PHP mysql用户:
来自php。netclickhere
但您需要为每个查询连接
# 3 楼答案
使用SELECT CURRVAL()。通常与pg_get_serial_序列一起使用
postgreSQL function for last inserted ID