如何在Greenplum数据库上使用psycopg2获得最后插入的行的ID?

这是我已经尝试过的几项不起作用的方法。

Greenplum不支持

  • RETURNING。
  • psycopg2的cursor.lastrowid始终返回0。
  • SELECT nextval()给我下一行ID,但也增加了计数器,因此实际插入的行使用其他ID。
  • 不支持
  • SELECT currval()。

  • 提前致谢。

    最佳答案

    我认为您可以得到的最接近的是select * from seq_name:

    dwh=# select * from queue_id_seq;
     sequence_name | last_value | increment_by |      max_value      | min_value | cache_value | log_cnt | is_cycled | is_called
    ---------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
     queue_id_seq  |        127 |            1 | 9223372036854775807 |         1 |           1 |      32 | f         | t
    

    last_value显示任何 session 分配的最后一个值

    或者,您可以基于“自然主键”回读插入的行

    我不会使用nextval(),因为序列不是无间隙的。

    关于sql - 使用Psycopg2和Greenplum数据库获取最后插入的行ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11696805/

    10-13 02:13