【问题标题】:Referencing inserted ID in multiple insert transactions in Postgres在 Postgres 的多个插入事务中引用插入的 ID
【发布时间】:2019-05-31 09:43:44
【问题描述】:

我需要构建一个 SQL 查询,该查询必须能够在第一个表中插入数据,获取插入的 ID,然后将其用作下表中的外键。

WITH inserted AS (
    INSERT INTO firstTable (name) VALUES ('somename') RETURNING id
)

SELECT * FROM inserted; -- this has the inserted id

INSERT INTO secondTable (name, foreign_id) VALUES ('someexternalname', ???)

那么如何在secondTable 插入中引用id 中的inserted

【问题讨论】:

    标签: sql postgresql transactions foreign-keys relational-database


    【解决方案1】:

    你已经完成了这百分之八十,完整的 SQL 是:

    with inserted as (
     insert into first_table(name) values ('somename') returning id
    )
    insert into second_table(name, foreign_id) select 'someexternalname',id from inserted
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      WITH inserted AS (
          INSERT INTO firstTable (name) VALUES ('somename') RETURNING id
      )
      
      INSERT INTO secondTable (name, foreign_id)
      SELECT
      'someexternalname',
      id
      FROM inserted;
      

      【讨论】:

        【解决方案3】:

        你可以试试这个:

        INSERT INTO secondTable (name, foreign_id) VALUES ('someexternalname', (SELECT 
        MAX (id) FROM firstTable))
        

        【讨论】:

          猜你喜欢
          • 2016-08-13
          • 1970-01-01
          • 2020-05-08
          • 1970-01-01
          • 1970-01-01
          • 2014-08-06
          • 2016-05-11
          • 2023-03-16
          • 2016-08-15
          相关资源
          最近更新 更多