如何解决Scala、Quill、Postgres - 由于“ON CONFLICT”错误而无法插入数据库
我有一个在 Postgres 中创建表的简单模式:
CREATE TABLE IF NOT EXISTS test.table
(
id varchar(255) NOT NULL,action varchar(255) NOT NULL,text varchar(255) NOT NULL,PRIMARY KEY (id,action),CONSTRAINT fk_other FOREIGN KEY (id,action) REFERENCES test.others(action,id) ON DELETE CASCADE
);
以及将数据插入其中的 Scala 代码:
testTable
.insert(lift(entity))
.onConflictUpdate(_.action,_.id)(
(t,e) => t.text -> e.text
.returning[TestRow](r => r)
但是当我运行它时,我得到了一个错误:
Message,there is no unique or exclusion constraint matching the ON CONFLICT specification
我觉得我在这里做的一切都很好,但是这个错误似乎很奇怪。你能帮我解决这个问题吗?
解决方法
您的 INSERT INTO ... ON CONFLICT
语句缺少确定插入的行如何与表中的现有行发生冲突所需的 unique or exclusion constraint
。
这可能是由于自动推理未找到您的约束,或者更有可能是您忘记指定一个或多个标识约束的列。
在 SQL 中,您可以像这样显式指定约束:
INSERT INTO distributors (did,dname)
VALUES (9,'Antwerp Design')
ON CONFLICT ON CONSTRAINT distributors_pkey
DO NOTHING;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。