如何将现有列转换为允许空值的外键-PostgreSQL

如何将现有列转换为允许空值的外键-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

我有一个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列中存在具有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字段