sql - Postgresql 中此 CTE 的正确方法

标签 sql node.js postgresql common-table-expression

我的目标是获取 Soggetto 条目中的 id 并将其填充到 tipo 和 tipo2 中。我不知道如何通过 nodejs 中的 pg 在 Postgres 中以正确的方式编写此 CTE。我有点困惑。

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');
                        }
                      });

最佳答案

语法不正确。目前还不清楚您到底想要什么,但每个 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;

关于sql - Postgresql 中此 CTE 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44045268/

相关文章:

python - 使用 PygreSQL v5.0.6 将 None 值插入从 python 到 PostgreSQL 数据库的 Date 列

php - 选择 count() 等于特定值的所有用户

mysql - 返回特定 ID 的最大值的日期

node.js - 从使用await的代码创建一个promise

python - 尝试在 python : invalid dsn: invalid connection option "username" 中连接时出现 PostgreSQL 错误

java - Hibernate双向多对多实现

sql - 在第一个连字符之前填充零并删除空格并添加 BA 和 IN

mysql - SQL:关于构建表以适应 3D 数据的提示?

php - 如何获取所有区域的 ELB 列表以及 AWS 账户的详细信息

node.js - Heroku 上的自动部署问题