Как я могу добавить ограничение, как столбец имеет конкретное значение, когда другой столбец является нулевым или не нулевым? - PullRequest
0 голосов
/ 18 декабря 2018

Вот мои строки начальных данных:

{ organization_id: 1, parent_id: null, organization_type: OrganizationType.ORG },
{ organization_id: 2, parent_id: 1, organization_type: OrganizationType.CLIENT },
{ organization_id: 3, parent_id: 1, organization_type: OrganizationType.CLIENT }

Я хочу добавить ограничение в таблицу organizations.

Это ограничение имеет следующие правила:

  1. organization_type должно быть OrganizationType.ORG, когда parent_id равно null

  2. organization_type должно быть OrganizationType.CLIENT, когда parent_id не null

Как я могу это сделать?спасибо.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать проверочное ограничение:

create table organizationns
(
  <other columns>, 
  parent_id integer,
  organization_type varchar(50) not null,
  constraint check_org_type 
    check (   (parent_id is null     and organization_type = 'ORG')
           or (parent_id is not null and organization_type = 'CLIENT')) 
);

Но столбец organization_type в этом случае кажется довольно бесполезным, поскольку вы всегда можете извлечь его из parent_id (например, черезвид)

...