Mysql Дилемма внешнего ключа - PullRequest
2 голосов
/ 25 сентября 2011

У меня есть столбец contactId на одной таблице, который является внешним ключом, связанный с идентификатором таблицы contacts.Т.е. каждая строка в моей 2-й таблице может быть связана с контактом.

Однако некоторые записи не обязательно должны быть связаны с какими-либо контактами.В таких случаях идентификатор контакта будет 0. Когда я пытаюсь вставить такую ​​запись, я получаю эту ошибку:

Error Number: 1452 Cannot add or update a child row: a foreign key constraint fails 

Что мне делать?

Ответы [ 2 ]

3 голосов
/ 25 сентября 2011

Если столбец contactId, имеющий FK для другой таблицы, обнуляется (и может быть), вы можете просто установить для тех, у кого нет контактов, NULL. Внешний ключ в основном означает, что если столбец имеет значение, отличное от NULL, то это значение должно существовать в первичном ключе таблицы, на которую ссылается ограничение внешнего ключа. В противном случае просто установите его в NULL.

2 голосов
/ 25 сентября 2011

Используйте NULL в качестве contactId, если неважно, что строка ссылается на конкретный.

Столбцы внешнего ключа могут иметь значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...