GBase 8c
其他
问答
varchar类型的非空字段,插入""报错:violates not-null constraint
发表于2025-08-29 15:55:0574次浏览3个评论
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】: GBASE8cV5
【操作系统】: CentOS Linux release 7.4.1708 (Core)
【CPU】: CPU op-mode(s): 32-bit, 64-bit Model name: Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz
【问题描述】*:
1、创建一个表,设置str_field为非空
CREATE TABLE public.a_test (
"FID" int4 NULL,
value int4 NULL,
str_field varchar(255) NOT NULL
)
2、添加数据
INSERT INTO "public"."a_test" ("FID","value","str_field") VALUES (0,1,'')
报错:SQL 错误 [23502]: ERROR: null value in column "str_field" violates not-null constraint
3、在postgis中,是可以正常添加的。请问gbase中对于""的处理,是如上述所说,不允许添加到非空的字段中么
评论
登录后才可以发表评论
GBase用户137发表于 11个月前
最佳回答
GBase用户20955发表于 10个月前
@GBase用户137:按照方法1操作,将非空的varchar类型设置为default '',执行插入INSERT INTO "public"."a_test" ("FID","value","str_field") VALUES (0,1,''),还是会报错。

崔哥发表于 3个月前
楼上黄昏欲望休,玉梯横绝月中钩。芭蕉不展丁香结,同向春风各自愁。东南日出照高楼,楼上离人唱石州。总把春山扫眉黛,不知供得几多愁?
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526
解决方案:
方法1:修改表结构,为字段设置默认值(如DEFAULT ''):
CREATE TABLE public.a_test (
"FID" int4 NULL,
value int4 NULL,
str_field varchar(255) NOT NULL DEFAULT ''
)
这样即使插入空字符串,也会被默认值替代。
方法2:在插入数据时显式指定非空值(如空格或其他占位符):
INSERT INTO "public"."a_test" ("FID","value","str_field") VALUES (0,1,' ');
方法3:如果业务允许,将字段改为允许NULL:
ALTER TABLE public.a_test ALTER COLUMN str_field DROP NOT NULL;