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

PostgreSQL检查约束报错:插入符合要求的值仍触发错误

问题原因与解决办法

你的检查约束存在语法错误:约束中的'str'::text是固定字符串字面量,并非引用表内的str列。PostgreSQL规定单引号包裹的内容为静态文本,因此你的约束实际是在判断字符串'str'是否等于'koko'——这一条件永远不成立,所以无论插入什么值都会触发约束违反错误。

正确的建表语句

去掉列名的单引号(列名无需用单引号包裹,单引号仅用于字符串字面量):

CREATE TABLE public.test (
    str text NULL,
    CONSTRAINT test_check CHECK (str = 'koko'::text)
);

也可以简化写法(text类型比较时可省略显式类型转换):

CREATE TABLE public.test (
    str text NULL,
    CONSTRAINT test_check CHECK (str = 'koko')
);

修改后执行插入语句INSERT INTO public.test(str) VALUES ('koko');即可正常通过约束校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:05:21