【发布时间】:2021-12-13 07:14:12
【问题描述】:
我有 3 张桌子:
CREATE TABLE stage
(
a1 text,
b2 text,
c3 text,
d4 text,
e5 text
);
CREATE TABLE main
(
id bigserial PRIMARY KEY,
a1 text,
b2 text,
c3 text
);
CREATE TABLE secondary (
id bigserial PRIMARY KEY,
mainid bigint,
d4 text,
e5 text,
CONSTRAINT secondary_fkey FOREIGN KEY(mainid) REFERENCES main(id)
);
我想一次将来自stage 的数据插入main 和secondary,但我不太确定如何通过在main 中重用生成的bigserial 来做到这一点。我正在尝试with query,但secondary 中的行数(指数)比预期的要多。
WITH tmp AS (
INSERT INTO
main (a1, b2, c3)
SELECT
a1,
b2,
c3
FROM
stage RETURNING id
)
INSERT INTO
secondary (mainid, d4, e5)
SELECT
tmp.id,
stage.d4,
stage.e5
FROM
tmp,
stage;
【问题讨论】:
标签: sql postgresql postgres-10