Установить правило в Postgres для записи в столбце

У меня есть таблица с названием Staff, которую я сейчас создаю. У меня есть столбцы:

  • staffNo
  • Fname
  • LName
  • позиция
  • секс
  • дата рождения
  • оплата труда
  • branchNo

В настоящее время у меня есть запись в командной строке postgres:

CREATE TABLE Staff(
         staffNo     TEXT CONSTRAINT firstkey PRIMARY KEY,
         fname       TEXT NOT NULL,
         lname       TEXT NOT NULL,
         position    TEXT NOT NULL,
         sex         CHAR(1) NOT NULL,
         DOB         DATE NOT NULL,
         salary      INT NOT NULL,
         FOREIGN KEY (branchNo) REFERENCES Branch(branchNo));

Я хотел бы установить его так, чтобы для позиции в этот столбец можно было вставить только менеджера, помощника или супервизора. Что касается секса, я бы хотел, чтобы то же самое было для М или F. Кто-нибудь может привести пример того, как это можно сделать?

1 ответ

Решение

Вы можете добиться этого, используя ограничение проверки:

CREATE TABLE Staff(
     staffNo     TEXT CONSTRAINT firstkey PRIMARY KEY,
     fname       TEXT NOT NULL,
     lname       TEXT NOT NULL,
     position    TEXT NOT NULL,
     sex         CHAR(1) NOT NULL,
     DOB         DATE NOT NULL,
     salary      INT NOT NULL,
     FOREIGN KEY (branchNo) REFERENCES Branch(branchNo),
     CHECK((position = 'Manager' or position = 'Assistant' or position = 'Supervisor') 
     AND (sex = 'F' OR sex = 'M')));

Но это более гибко, если вы ссылаетесь на эти константы из другой таблицы (возможно, position_table)

Другие вопросы по тегам