外部キーでリンクされたテーブルにデータ挿入の問題があります。私はいくつかの場所で、このような状況に役立つ "with"コマンドがあることを読みましたが、どのように使用されているかはよく分かりません。PostgreSQL - 複数のテーブルに同時にデータを挿入する
レコードを作成するために使用される4つのテーブルをまとめておきますが、すべてのデータが一度に1つのクエリで挿入され、最後のテーブルに関連付けられていますので、相談。ここでは、テーブルを作成するためのコードは次のとおりです。
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)
);
配列この例を見てみますトランザクションではないため、ここでトランザクションに頼るのは安全ではありません。 – fpietka
どうして危険ですか? nextval()の副作用はトランザクションの外ですぐに見ることができるので、その結果を使用するのが安全であると思われます。 –
以下の説明は、あなたのことをより明確にするかもしれません:p http://stackoverflow.com/questions/2095917/sequences-not-affected-by-transactions –