在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中选择的。因此,两个结果集之间没有公共的唯一列。
1条答案
按热度按时间vfhzx4xs1#
从CTE中选择并不会阻止您使用任何想要的连接:demo:
个字符
| 事务标识|交易日期|突变|
| --|--|--|
| 59b0f892-9c7b-4d00-b2c0-736169290221| 2023-10-31 15:15:46.863376+00|突变1|
型
| 交易日期|突变|效果|
| --|--|--|
| 2023-10-31 15:15:46.863376+00|突变1| effect1|
型
| 事务标识|效果|
| --|--|
| 59b0f892-9c7b-4d00-b2c0-736169290221| effect1|