Уникальное поле по двум столбцам
Есть таблица book_authors которая связывает две таблицы, books и authors связь многие-ко-многим. В таблицы book_authors есть поля book_id и author_id. Необходимо сделать так, чтобы эти поля были уникальными, т.е. чтобы не было дубликатов записей, например не должно быть:
id book_id author_id
1 1 2
2 1 2
...
Подскажите, пожалуйста, как это можно сделать?
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Как уже упомянул коллега @ЮрийСПб в комментариях, вы можете сделать:
ALTER TABLE book_authors
ADD CONSTRAINT constraint_name UNIQUE (book_id, author_id);
Но в таком случае в вашей таблице совершенно
не нужен синтетический первичный ключ id:
CREATE TABLE book_authors (
author_id INTEGER REFERENCES authors(id)
, book_id INTEGER REFERENCES books(id)
, PRIMARY KEY (author_id, book_id)
)
;