Этот вопрос проверяет знание встроенных механизмов обеспечения целостности данных на уровне столбца.
Для столбцов в PostgreSQL можно задать ограничения NOT NULL (запрет пустых), UNIQUE (уникальность), PRIMARY KEY (уникальный и NOT NULL), CHECK (проверка пользовательского условия) и REFERENCES (внешний ключ), а также DEFAULT для значения по умолчанию.
NOT NULL:
- Столбец не может принимать значение NULL.
UNIQUE:
- Значения в столбце (или наборе столбцов) уникальны.
PRIMARY KEY:
- Комбинация UNIQUE + NOT NULL, определяет уникальный идентификатор строки.
CHECK (<condition>):
- Проверяет условие, например CHECK (age >= 0).
FOREIGN KEY / REFERENCES:
- Ссылка на PRIMARY KEY другой таблицы, обеспечивает ссылочную целостность.
DEFAULT:
- Значение по умолчанию при отсутствии явного указания.
EXCLUDE (PostgreSQL-специфично):
- Запрет пересечения диапазонов или других сложных условий.
Пример:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
age INT CHECK (age >= 0),
group_id INT REFERENCES groups(id) ON DELETE CASCADE,
created_at TIMESTAMPTZ DEFAULT now()
);