You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同schema下user表匹配id插入userSettings报username非空约束错误

报错原因

你触发非空约束的核心原因是误用了INSERT语句:

  • INSERT INTO的作用是向表中插入全新的行记录,你只给新行的userSettings字段赋值,而b.user表中username是必填的非空字段,没有给该字段赋值自然会触发约束报错,这和你原本要修改已有行的需求完全不符。

正确实现方案

你需要的是更新两张表ID匹配的已有行的字段,应该使用UPDATE语句搭配关联查询实现,不同数据库的语法略有差异:

PostgreSQL 写法

UPDATE b.user AS b_u
SET "userSettings" = a_u."userSettings"
FROM a.user AS a_u
WHERE b_u.id = a_u.id;

MySQL 写法

UPDATE b.user b_u
INNER JOIN a.user a_u 
ON b_u.id = a_u.id
SET b_u.`userSettings` = a_u.`userSettings`;

另外你原来的查询语句里还存在笔误:关联条件里写的是b.users.id,多写了字母s,正确的表名是b.user,对应字段是b.user.id。

内容的提问来源于stack exchange,提问作者kris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:51:01