Проверяет знание синтаксиса составных уникальных ограничений в PostgreSQL и понимание разницы между уникальностью отдельной колонки и комбинации колонок.
В PostgreSQL уникальность можно задавать не только для одной колонки, но и для комбинации нескольких. Это означает, что каждая пара значений в указанных колонках должна быть уникальной во всей таблице, но сами значения в отдельных колонках могут повторяться. Например, в таблице заказов можно разрешить одинаковые товары в разных заказах, но запретить один и тот же товар дважды в одном заказе.
При создании таблицы ограничение указывается как отдельный элемент:
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
UNIQUE (order_id, product_id)
);Если таблица уже существует, используйте ALTER TABLE:
ALTER TABLE order_items
ADD CONSTRAINT unique_order_product UNIQUE (order_id, product_id);Здесь CONSTRAINT задаёт имя ограничения, что упрощает его удаление или изменение в будущем.
Составное уникальное ограничение — стандартный способ гарантировать целостность данных, когда уникальность определяется несколькими полями. Применяйте его в схемах с отношениями многие-ко-многим, журналах событий или любых таблицах, где комбинация значений должна быть уникальной.