Supabase Upsert多onConflict约束报错:无匹配唯一/排除约束
解决Supabase Upsert多字段冲突约束问题
错误的核心原因是:你在代码里指定了date和url作为冲突判断字段,但你的items表没有给这两个字段的组合添加唯一约束。Supabase基于PostgreSQL,而PostgreSQL要求onConflict参数对应的字段必须有唯一约束/排除约束,否则无法识别冲突条件。
解决步骤:
给
items表添加date+url的联合唯一约束
有两种操作方式:- Supabase控制台操作:
- 进入你的Supabase项目控制台,切换到
Table Editor找到items表 - 点击顶部的
Constraints标签,选择Add constraint,类型选Unique constraint - 在
Columns中同时勾选date和url,给约束命名(比如items_date_url_key),保存即可
- 进入你的Supabase项目控制台,切换到
- SQL语句操作(在Supabase的SQL编辑器中执行):
ALTER TABLE items ADD CONSTRAINT items_date_url_key UNIQUE (date, url);
- Supabase控制台操作:
重新执行你的Upsert代码
约束添加完成后,原来的代码就能正常运行,PostgreSQL会通过date和url的组合判断数据是否存在,存在则更新,不存在则插入。
额外说明
如果后续需要删除这个联合唯一约束,可执行:
ALTER TABLE items DROP CONSTRAINT items_date_url_key;
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

