Danish Kareem Ответов: 2

Как отрегулировать нарушения внешнего ключа с мультивыгоды исключение SQL блоки ?


Привет ребята с которыми я работаю C#.net и сервер MSSQL.У меня есть две таблицы категории и лекарства,
Таблица лекарств использует Category_ID в качестве внешнего ключа.
Вопрос:
я хочу поймать исключение, когда я удаляю Category_ID, на который ссылаются в медицине, в соответствии с иерархией исключений(общее исключение в конце), чтобы я мог поймать другие исключения.

Что я уже пробовал:

Я просто ловлю исключение с общим исключением.

2 Ответов

Рейтинг:
2

Maciej Los

Не рекомендую удалять CategoryID от Categories таблица должная к целостность данных (базы данных) [^].

Я бы настоятельно рекомендовал добавить немного (true/false) поле (например Active) к Categories таблица, которая будет отвечать за обнаружение, если Category доступен он или нет.


Danish Kareem

не могли бы вы дать мне справочный код?

Maciej Los

Что это за код? Все, что вам нужно сделать, это добавить новое поле в &ГТ;&ГТ;категории&ЛТ;&ЛТ; таблица.

Рейтинг:
13

Richard Deeming

Если я правильно понял ваш вопрос, вы пытаетесь поймать "Оператор DELETE конфликтует с ограничением ссылки" ошибка, возникающая при попытке удалить запись, на которую ссылается ограничение внешнего ключа, в котором не включено "каскадное удаление".

Номер ошибки будет следующим 547 Предполагая, что вы используете классы в System.Data.SqlClient пространство имен для управления вашими данными вам просто нужно поймать SqlException:

try
{
   ... Code to delete a record here ...
}
catch (SqlException ex) when (ex.Number == 547)
{
    ... Notify the user that the record is in use here ...
}


Danish Kareem

Да,я не хочу позволять пользователю удалять категорию,если на нее ссылаются из медицины, что бы то ни было."это наша лекция по обработке исключений, поэтому мы научимся устанавливать флаг false для лучшей целостности данных в будущем", - сказал наш лектор.
Спасибо.