【发布时间】:2018-12-24 19:19:07
【问题描述】:
我有一张表格,用户可以在其中回答问题。规则是用户可以回答许多问题,或者许多用户可以回答一个问题但用户只能回答特定问题一次。如果用户再次回答这个问题,它应该简单地替换旧的。通常,当我们处理唯一列时,冲突确实更新工作。在这种情况下,person_id 和 question_id 列不能是唯一的。然而,两者的结合总是独一无二的。如何实现冲突时更新的插入语句?
CREATE TABLE "answer" (
"person_id" integer NOT NULL REFERENCES person(id),
"question_id" integer NOT NULL REFERENCES question(id) ON DELETE CASCADE, /* INDEXED */
"answer" character varying (1200) NULL,
PRIMARY KEY (person_id, question_id)
);
【问题讨论】:
-
您是否尝试过 ON CONFLICT ON CONSTRAINT 变体?
标签: sql postgresql upsert