使用goq的pq sql驱动程序,我按照in the pq docs所述进行批量导入。有没有办法可以获取创建记录的ID?
答案 0 :(得分:0)
我假设您在COPY语句中引用的id列基于此类语句创建的序列生成序列:
CREATE SEQUENCE my_serial_name;
这意味着您可以像这样查询id的当前值:
SELECT currval('my_serial_name');
将返回id计数器的当前值。
回答对这种方法的任何进一步怀疑:
如需进一步阅读,请参阅网址:
序列函数,如表9-42所示(包括currval), 提供简单,多用户安全的方法来获得连续的 来自序列对象的序列值。
https://www.postgresql.org/docs/9.3/static/functions-sequence.html
因为nextval和setval调用永远不会回滚,所以顺序 如果"无间隙"序列号的分配是 需要。可以通过使用独占来构建无间隙分配 锁定包含柜台的桌子;但这个解决方案很多 比序列对象更昂贵,特别是如果很多事务 同时需要序列号。
https://www.postgresql.org/docs/9.5/static/sql-createsequence.html
要设置事务的事务隔离级别,请使用 命令SET TRANSACTION。
重要说明:某些PostgreSQL数据类型和函数有特殊规则 关于交易行为。特别是对a做出的改变 序列(因此使用serial声明的列的计数器) 对所有其他事务立即可见,并且不会滚动 如果进行更改的事务中止,则返回。见第9.16节 和第8.1.4节。
https://www.postgresql.org/docs/9.5/static/transaction-iso.html
我希望这能回答你的问题。 Postgresql是一个很棒的数据库,在掌握了详细信息后可以成为一个非常强大的工具。祝好运! :d