Обновление, ограничения внешнего ключа и нули

Я создаю шаблон данных на С#. С помощью хороших людей на этом замечательном сайте мне удалось решить почти все вопросы. Это должно быть последней проблемой. Поскольку это шаблон, над которым я работаю, мне нужны все поля в таблице, включая пустые значения. Мне помогли обновить нули, добавив (object)this.field ?? DBNull.Value, но у меня есть поле, которое является внешним ключом, и хотя, когда я смотрю в базу данных, оно говорит null, когда я извлекаю записи, значение становится равным 0. Когда я пытаюсь обновить это поле, оно говорит, что я нарушаю внешний ключ ограничения. Как я могу обойти эту проблему? Я думал, что нулевое решение будет работать, но оно не отображается как нулевое, оно отображается как 0.

Спасибо


person jumbojs    schedule 18.01.2009    source источник


Ответы (2)


Является ли 0 возможным допустимым значением для столбца? Если нет, просто приведите его к нулю, когда встретите его. Если он действителен, вы все равно можете это сделать, заключив его в условное выражение, которое сначала проверяет существование внешней строки.

person Community    schedule 18.01.2009

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

person Mark Harrison    schedule 18.01.2009
comment
К сожалению, нет, потому что это не таблицы, созданные нами, поэтому нам нужно работать с тем, что у нас есть. - person jumbojs; 18.01.2009
comment
нам нужно работать с тем, что у нас есть... да, это печальная история нашей жизни. :-) - person Mark Harrison; 19.01.2009