J'essaie d'insérer (ou de mettre à jour en cas de conflit) des lignes à partir de CTE mais j'ai du mal à trouver la bonne syntaxe pour cela. La table dans laquelle j'insère des lignes ressemble à ceci (simplifié pour des raisons de clarté)
Column | Type | Modifiers
----------------------+--------------------------+------------------------------------------------------------------
id | integer | not null default nextval('"QuestionStatistic_id_seq"'::regclass)
questionId | integer |
count | integer | not null default 0
Indexes:
"QuestionStatistic_pkey" PRIMARY KEY, btree (id)
"QuestionStatistic_questionId_key" UNIQUE CONSTRAINT, btree ("questionId")
Voici ma question :
with "Statistic" as (
select "questionId", "count" from "SomeTable"
)
INSERT INTO "QuestionStatistic" ("questionId", "count") SELECT "questionId", "count" FROM "Statistics"
ON CONFLICT ("questionId") DO UPDATE SET "count" = "Statistics"."count"
ce qui me donne ERROR: missing FROM-clause entry for table "Statistics"
sur SET "count" = "Statistics"."count"
partie. J'ai également essayé d'ajouter FROM à la clause de mise à jour, mais j'ai obtenu ce qui suit ERROR: syntax error at or near "FROM"
. Existe-t-il un moyen de faire fonctionner INSERT ON CONFLICT UPDATE avec CTE ?