Golang pq sql驱动程序:批量导入后获取记录ID
使用用于golang的pq sql驱动程序,我正在执行所述的批量导入。有没有办法获取已创建记录的ID 我假设您在COPY语句中引用的id列基于此类型语句创建的串行生成序列:Golang pq sql驱动程序:批量导入后获取记录ID,sql,postgresql,go,Sql,Postgresql,Go,使用用于golang的pq sql驱动程序,我正在执行所述的批量导入。有没有办法获取已创建记录的ID 我假设您在COPY语句中引用的id列基于此类型语句创建的串行生成序列: CREATE SEQUENCE my_serial_name; 这意味着您可以像这样查询id的当前值: SELECT currval('my_serial_name'); 它将返回id计数器的当前值 在回答有关此方法的任何进一步疑问时: 此语句是线程的本地语句,并且完全隔离 上述语句证明此方法在多用户环境中非常有用,并
CREATE SEQUENCE my_serial_name;
这意味着您可以像这样查询id的当前值:
SELECT currval('my_serial_name');
它将返回id计数器的当前值
在回答有关此方法的任何进一步疑问时:
- 此语句是线程的本地语句,并且完全隔离
- 上述语句证明此方法在多用户环境中非常有用,并且将生成正确的值,而不会被使用此序列对表执行的其他insert查询所修改
我希望这能回答你的问题。Postgresql是一个很好的数据库,如果掌握了详细信息,它可以成为一个非常强大的工具。祝你好运D底层PostgreSQL
COPY
命令没有提供为生成的列返回结果集的方法。因此,没有,除了查询表以匹配插入的数据并查找任何生成的键之外。@CraigRinger是的,但从Postgres的角度看是可能的(使用插入到…返回id
),我认为应该有一种方法通过pq
包实现这一点。是的,有。。。使用插入到。。。返回
,可能带有多条目的值
列表。COPY
没有等价物,这是您的pq
包的批量加载方法的文档所建议的。我猜您必须为pq
编写另一个批量加载变量函数,该函数使用批处理插入到。。。值(…),(…),(…)。。。返回…
查询。或执行复制。。。正在返回…
:p