gpt4 book ai didi

sql - PostgreSQL - 同时向多个表中插入数据

转载 作者:行者123 更新时间:2023-11-29 11:54:09 25 4
gpt4 key购买 nike

我在外键链接的表中遇到数据插入问题。我在某些地方读到有一个“with”命令可以在这些情况下提供帮助,但我不太明白它是如何使用的。

我想把四张表放在一起做一个记录,但是,所有的数据都是一次插入的,在一个查询中,并且它们与最后一张表相关联,以方便将来的咨询.下面是创建表的代码:

    CREATE TABLE participante
(
id serial NOT NULL,
nome character varying(56) NOT NULL,
CONSTRAINT participante_pkey PRIMARY KEY (id),
);

CREATE TABLE venda
(
id serial NOT NULL,
inicio date NOT NULL,
CONSTRAINT venda_pkey PRIMARY KEY (id)
);

CREATE TABLE item
(
id serial NOT NULL,
nome character varying(256) NOT NULL,
CONSTRAINT item_pkey PRIMARY KEY (id)
);


CREATE TABLE lances_vendas
(
id serial NOT NULL,
venda_id integer NOT NULL,
item_id integer NOT NULL,
participante_id integer NOT NULL,
valor numeric NOT NULL,
CONSTRAINT lance_vendas_pkey PRIMARY KEY (id),
CONSTRAINT lances_vendas_venda_id_fkey FOREIGN KEY (venda_id)
REFERENCES venda (id),
CONSTRAINT lances_vendas_item_id_fkey FOREIGN KEY (item_id)
REFERENCES item (id),
CONSTRAINT lances_vendas_participante_id_fkey FOREIGN KEY (participante_id)
REFERENCES participante (id)
);

最佳答案

想法是编写包含INSERT ... RETRUNINGWITH 子句以返回生成的 key 。然后可以使用这些“单个查询的 View ”将这些键插入到引用表中。

WITH par_key AS
(INSERT INTO participante (nome) VALUES ('Laurenz') RETURNING id),
ven_key AS
(INSERT INTO venda (inicio) VALUES (current_date) RETURNING id),
item_key AS
(INSERT INTO item (nome) VALUES ('thing') RETURNING id)
INSERT INTO lances_vendas (venda_id, item_id, participante_id, valor)
SELECT ven_key.id, item_key.id, par_key.id, numeric '3.1415'
FROM par_key, ven_key, item_key;

关于sql - PostgreSQL - 同时向多个表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com