如何将现有列转换为允许空值的外键-PostgreSQL
我有一个Postgres数据库,表t和列fk_c。我想将该列转换为一个外键,该外键在表查找中引用c_id并允许空值。我该怎么做如何将现有列转换为允许空值的外键-PostgreSQL,postgresql,foreign-keys,Postgresql,Foreign Keys,我有一个Postgres数据库,表t和列fk_c。我想将该列转换为一个外键,该外键在表查找中引用c_id并允许空值。我该怎么做 ALTER TABLE public.t ADD CONSTRAINT "fk_t_c" FOREIGN KEY ("fk_c" ) REFERENCES "public"."lookup_c" ("c_id"); 不起作用,因为fk_c列和I get列中存在具有nul
ALTER TABLE public.t ADD CONSTRAINT "fk_t_c" FOREIGN KEY ("fk_c" ) REFERENCES "public"."lookup_c" ("c_id");
不起作用,因为fk_c列和I get列中存在具有null值的行
错误:对表“t”的插入或更新违反外键约束“fk\u t\u c”
详细信息:表“lookup_c”中不存在键(fk_c)=()。错误消息表明该列中有空字符串,而不是
null
值
在创建外键之前,需要将这些值设置为null
:
update t
set fk_c = null
where trim(fk_c) = '';
空值不会导致错误。什么数据类型是fk_c?它是一个文本字段。抱歉,没有,fk_c和c_id都是citext字段