PostgreSQL检查两个字段之一

PostgreSQL检查两个字段之一,postgresql,constraints,Postgresql,Constraints,我有一个带有名称、代码和代码2字段的表。 如何编写检查以只允许名称为且其中一个代码存在的行 WellA, null, Code2 - OK WellB, Code1, null - OK WellC, Code3, Code4 - OK WellD, null, null - NOT OK 关于添加检查约束: CHECK (name IS NOT NULL AND (code IS NOT NULL OR code2 IS NOT NULL)) ALTER TABLE tab

我有一个带有名称、代码和代码2字段的表。 如何编写检查以只允许名称为且其中一个代码存在的行

WellA, null, Code2 -  OK
WellB, Code1, null - OK
WellC, Code3, Code4 - OK
WellD, null, null - NOT OK

关于

添加检查约束:

CHECK (name IS NOT NULL AND
      (code IS NOT NULL OR code2 IS NOT NULL))
ALTER TABLE tab
ADD CONSTRAINT my_check CHECK (COALESCE(Code1,Code2) IS NOT NULL);

您可以添加
检查
约束:

CHECK (name IS NOT NULL AND
      (code IS NOT NULL OR code2 IS NOT NULL))
ALTER TABLE tab
ADD CONSTRAINT my_check CHECK (COALESCE(Code1,Code2) IS NOT NULL);