2015-10-15 2 views
0

У меня есть сотрудник таблицы, в котором ПК является SSN, и я хочу сделать FK как Super_SSN, который будет ссылаться на SSN. Прежде чем добавлять какие-либо данные в мою таблицу, я смог сделать Super_SSN своим FK, но я не смог добавить данные в Super_SSN, кроме того же значения SSN. Пример Я хотел, чтобы SSN составлял 123456789, и я попытался ввести Super_SSN как 987654321. Но у меня была ошибка ограничения FK. Когда я ввел то же значение для SSN и Super_SSN, он принял его. Затем я удалил FK из Super_SSN и добавил данные, после чего я попытался добавить FK в Super_SSN, после чего получил ошибку. Пожалуйста, помогите мне с этим!Внешний ключ и первичный ключ в одной таблице в sql

+0

Почему вы хотите, чтобы они были одинаковыми? Это не имеет смысла. Поскольку первичный ключ всегда должен быть уникальным, почему у вас есть внешний ключ здесь? Если нет чего-то, чего я не вижу. Можете ли вы разместить свои столы. – Shawn

ответ

1

SuperSSN должен обратиться к SSN от существующего сотрудника.

Вы должны ввести сотрудников в правильном порядке - в вашем примере SSN 987654321 первым, затем SSN 123456789 с SuperSSN = 987654321.

Или введите все сотрудники без указания SuperSSN и обновлять его, чтобы исправить значения в другой команде.

0

Вы получаете ошибку, потому что FK является частью рекурсивных отношений. Это означает, что сотрудник связан с другим сотрудником. Если второй сотрудник не существует, появляется ошибка ограничения FK. Вот почему вы не получаете ошибку при добавлении того же SSN. Положительное решение: вы можете добавить столбец Super_SSN как простое поле, но не как FK.

Смежные вопросы