Как не создавать одинаковых строк в postgres
Все привет. В моей таблице есть 3 столбца, каждый из столбцов по отдельности не уникален. Мне нужно чтобы столбцы оставались не уникальными но в целом нельзя было добавить в таблицу строку, которая полностью соответствет другой строке.
Например чтобы в случае если уже есть запись:
id username dob
1 John 01-01-1991
то при вводе
insert into some_table (id, username, dob) values(1, 'John', '01-01-1991')
Новая запись не делалсь, а в идеале давала ошибку которую потом можно на бэкенде обработать
Но если при том же условии в параметрах для values поменять хоть одно значение то запись делалась
Фильтрация по id не подходит так как id ссылается на другую таблицу Как это можно реализовать?
Ответы (1 шт):
Наприме можно сделать первичный ключ составным (compound key). Такой ключ может потребоваться, если у нас сразу несколько столбцов должны уникально идентифицировать строку в таблице. Например:
CREATE TABLE order_items (
order_id INTEGER,
product_id INTEGER,
quantity INTEGER,
price MONEY,
PRIMARY KEY(order_id , product_id )
);
Здесь поля order_id и product_id вместе выступают как составной первичный ключ. То есть в таблице order_items не может быть двух строк, где для обоих из этих полей одновременно были бы одни и те же значения.