Правильный путь для этого CTE в Postgresql
Моя цель состоит в том, чтобы забрать идентификатор в записи Soggetto и заполнить его в tipo и tipo2. Я не могу понять, как правильно написать этот CTE в Postgres через pg в nodejs. Я немного смущен.
var query = client.query('WITH retid AS (INSERT INTO "Soggetto" (nome, cognome, "regSociale", "partIVA") VALUES ($1, $2, $3, $4) RETURNING id ), INSERT INTO "Tipologia" (privato, azienda) VALUES ($5, $6) SELECT id FROM retid, INSERT INTO "Tipologia2" (cliente, fornitore) VALUES ($7, $8) SELECT id FROM retid ',
[sog.nome, sog.cognome, sog.ragioneSociale, sog.partitaIva, sog.cliente, sog.fornitore, sog.privato, sog.azienda], function(err, result){
if(err){
console.log(err);
}else{
res.writeHead(200, {'content-type': 'text/plain'});
res.end('Insert ok');
}
});
1 ответ
Решение
Синтаксис неверный. Непонятно, что именно вы хотите, но каждому CTE нужно свое имя. Итак, как то так:
WITH retid AS (
INSERT INTO "Soggetto" (nome, cognome, "regSociale", "partIVA")
VALUES ($1, $2, $3, $4)
RETURNING id
),
t as (
INSERT INTO "Tipologia" (privato, azienda)
VALUES ($5, $6)
),
t2 as (
INSERT INTO "Tipologia2" (cliente, fornitore)
VALUES ($7, $8)
)
SELECT id
FROM retid;