Установить правило в 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
)