Почему этот составной первичный ключ не работает должным образом?
У меня есть таблица "tbl_project_user_assignment" с составным первичным ключом.
Это составлено из project_id и user_id
Каждый из них также является внешним ключом для таблицы проекта и пользователя соответственно.
На данный момент у меня есть 2 записи в этой таблице, как показано ниже...
идентификатор_проекта | user_id -------------------- 1 | 1 1 | 2
Когда я запускаю этот SQL-запрос...
INSERT INTO tbl_project_user_assignment (project_id, user_id) VALUES (2, 1);
... я получаю следующее сообщение об ошибке:
Нарушение ограничения целостности: 1062 Повторяющаяся запись '1' для ключа 'FK_project_user'
Ключ FK_project_user - это ключ, связывающий идентификатор_проекта с идентификатором tbl_project.
Это не имеет смысла для меня, потому что значения, которые я вставляю, уникальны...
Есть идеи?
2 ответа
Это выглядит как FK_project_user
это уникальный ключ. Попробуйте временно удалить это ограничение и снова выполнить вставку.
Если вставка работает, заново создайте ограничение, убедившись, что оно не помечено как unique
больше.
Я думаю, что вы должны иметь:
- отношение внешнего ключа к проекту
- отношение внешнего ключа к пользователю
- уникальное ограничение (проект, пользователь)
- возможно, первичный ключ для комбинации (проект, пользователь) ИЛИ отдельное поле ключа. Если вы выберете комбинированный PK, вам, конечно, не понадобятся дополнительные ограничения.
И, кажется, у вас есть уникальное ограничение для пользователя (само по себе).
Отправка show create table
заявление поможет еще больше.