postgresql Postgres将数据连接到插入的生成的ID

x3naxklr  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(161)

在postgres中,我想在第一个表中插入多行,然后使用生成的标识在第二个表中插入多行。有没有办法将返回的ID与我的数据连接起来?
我有以下代码片段,其中我首先将新的股息插入到插入的表中,然后使用这些生成的ID插入到股息表中。

WITH inserted AS (
    INSERT INTO transaction (transaction_date, mutation)
    SELECT transaction_date, mutation FROM new_dividends
    RETURNING transaction_id
)
INSERT INTO dividend (transaction_id, effect)
SELECT transaction_id, effect FROM inserted;

字符串
这不起作用,因为在第二个插入中,效果应该从new_dividends中选择,因为它不存在于返回语句中。
编辑:transaction_id在transaction中生成,所以它不是从new_dividends中选择的。因此,两个结果集之间没有公共的唯一列。

vfhzx4xs

vfhzx4xs1#

CTE中选择并不会阻止您使用任何想要的连接:demo

WITH inserted AS (
    INSERT INTO transaction (transaction_date, mutation)
    SELECT transaction_date, mutation FROM new_dividends
    RETURNING transaction_id, transaction_date, mutation
)
INSERT INTO dividend (transaction_id, effect)
SELECT transaction_id, effect FROM inserted NATURAL JOIN new_dividends;

个字符
| 事务标识|交易日期|突变|
| --|--|--|
| 59b0f892-9c7b-4d00-b2c0-736169290221| 2023-10-31 15:15:46.863376+00|突变1|

table new_dividends;


| 交易日期|突变|效果|
| --|--|--|
| 2023-10-31 15:15:46.863376+00|突变1| effect1|

table dividend;


| 事务标识|效果|
| --|--|
| 59b0f892-9c7b-4d00-b2c0-736169290221| effect1|

相关问题