从postgresql插入返回id

时间:2015-06-18 09:18:10

标签: sql postgresql sql-insert

在外部应用程序中,我想执行以下操作:

  1. 在表A中插入条目
  2. 将一堆条目插入到表B中,将我在A中新插入的项目的ID作为外键
  3. 所以表格看起来像这样:

    SELECT employee_id, name,  dob
    FROM YourTable
    UNION
    SELECT employee_id, father_name,  dob
    FROM YourTable
    

    这是否可以仅在postgresql中完成?或者可以在创建表A中的项后将id返回给我的应用程序,这样我的应用程序可以添加其余的值吗?

    我查看了following post,但它的语法不正确,导致无限循环导致堆栈溢出(多么讽刺)。

1 个答案:

答案 0 :(得分:3)

有几种方法可以做到:

假设a._idserial列:

insert into a (data) values ('foo');
insert into b (_id, other_data) values (lastval(), 'foobar');

编辑(在评论中讨论后): 请注意,lastval()是并发安全的(与所有序列相关的函数)。即使其他会话在两个语句之间插入a内容,lastval()仍会返回与当前会话相关的值(即前一个会话生成的值) {1}})

您已经链接到的问题详细描述了其他方法:https://stackoverflow.com/a/6560530/330315

或使用数据修改CTE:

insert