Одинаковые записи в промежуточной таблицей

Рейтинг: 0Ответов: 1Опубликовано: 11.03.2023

Есть две таблицы: Users, Moods. Есть связующая таблица UserMoods (связь "Many-To-Many"), выглядит схема так - https://ibb.co/R675tb6.

Записи в UserMoods выглядят так - https://ibb.co/rG9jTP3.

Вопрос: могу ли я в такую таблицу добавить строку, у которой поля будут userId = 3, moodId = 2, то есть такие значения, которые уже существуют?

Postgres говорит, что нельзя, но мне надо хранить такие записи, как можно это решить? Или использовать другую связь между таблицами?

ERROR:  duplicate key value violates unique constraint "UserMoods_userId_moodId_key"
DETAIL:  Key ("userId", "moodId")=(3, 2) already exists.

Ответы

▲ 1

postgresql прямым текстом говорит, что у вас определено уникальное ограничение (вами собственноручно, а не базой) UserMoods_userId_moodId_key, которое препятствует добавлять повторяющиеся строки с ключом Key ("userId", "moodId") из двух полей. Это ограничение допускает комбинации (1,1), (1,2), (1,3), (2,3), (3,3) но не (3,2), (3,2). Вполне резонное ограничение для таблицы связей многие-ко-многим.

Если вам это ограничение не нужно - ну так уберите его, вы же сами его добавили.