Уникальное поле по двум столбцам

Есть таблица 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)
)
;
→ Ссылка