2017-05-18 1 views
0

私の目標は、SoggettoエントリのIDをピックアップしてtipoとtipo2に記入することです。このCTEを正しい方法でPostgresでnodejsのpgで書き込む方法がわかりません。私はちょっと混乱している。PostgreSQLのこのCTEのためのRigth方法

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

エラーは何ですか? Node.jsの外部で動作しますか?期待している結果は何ですか? –

答えて

2

構文が正しくありません。あなたが望むものは正確には不明ですが、各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; 
+0

これ以上のエラーはありません....しかし、私はtipogiaのSoggetto idとtipologia2.soggetto_idはtipoとtipo2の値を格納するためのカラムです。 – user243062

+0

挿入される値は、パラメータの値であり、戻り値ではありません。これはあなたが尋ねた質問に答えます。おそらく*別の質問をして、サンプルデータ、望ましい結果、そしてあなたが達成したいことの説明を提供するべきです。 –

関連する問題