Почему этот составной первичный ключ не работает должным образом?

У меня есть таблица «tbl_project_user_assignment» с составным первичным ключом.

Она состоит из project_id и user_id

Каждый из них также является внешний ключ к таблицам проекта и пользователя соответственно.

На данный момент у меня есть 2 записи в этой таблице, как показано ниже …

 project_id |  user_id -------------------- 1 |  11 |  2 

Когда я запускаю этот sql-запрос …

INSERT INTO tbl_project_user_assignment (project_id, user_id) VALUES (2, 1);

… Я получаю следующее сообщение об ошибке:

Нарушение ограничения целостности: 1062 Повторяющаяся запись ‘1’ для ключа ‘FK_project_user’

Ключ FK_project_user — это ключ, связывающий project_id с идентификатором tbl_project.

Для меня это не имеет смысла, потому что значения, которые я вставки уникальны …

Есть идеи?


Похоже, FK_project_user — уникальный ключ. Попробуйте временно удалить это ограничение и снова выполнить вставку.

Если вставка работает, воссоздайте ограничение, убедившись, что оно больше не помечено как уникальное .


0

Думаю, у вас должно быть:

  • отношение внешнего ключа к проекту
  • отношение внешнего ключа к пользователю
  • уникальное ограничение для (проекта, пользователя)
  • возможно первичный ключ в комбинации (проект, пользователь) ИЛИ отдельное поле ключа. Если вы выберете комбинированный PK, вам, конечно, не понадобится дополнительное ограничение.

И, похоже, у вас есть уникальное ограничение на пользователя (само по себе).

Публикация оператора show create table поможет еще больше.

Поделиться
ответил 27 февраля 2011, 20:23
добавить комментарий |

Я думаю, у вас должно быть:

  • отношение внешнего ключа к проекту
  • отношение внешнего ключа к пользователю
  • уникальное ограничение на (проект, пользователь)
  • , возможно, первичный ключ на комбинации (project , пользователь) ИЛИ отдельное ключевое поле Если вы выберете комбинированный ПК, вам, конечно, не понадобится дополнительное ограничение.

И, похоже, у вас есть уникальное ограничение для пользователя (само по себе ).

Публикация оператора show create table поможет еще больше.

Оцените статью
Botgadget.ru
Добавить комментарий