У меня проблема с вложением данных в таблицы, связанные внешним ключом. В некоторых местах я читал, что есть команда «с», которая помогает в этих ситуациях, но я не совсем понимаю, как она используется.PostgreSQL - одновременно вставлять данные в несколько таблиц
Я хотел бы собрать четыре таблицы, которые будут использоваться для записи, однако, что все данные были вставлены сразу, в одном запросе и что они были связаны с последней таблицей, чтобы облегчить будущее консультации. Вот код для создания таблиц:
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() сразу отображается за пределами транзакции, и именно поэтому он (предположительно, как вам кажется, не убежден) безопасен для использования его результата. –
Следующее обсуждение может стать для вас более ясным: http://stackoverflow.com/questions/2095917/sequences-not-affected-by-transactions –