Я хотел бы иметь возможность предсказать, приведет ли DELETE к нарушению ограничения, без фактического выполнения удаления.
Какие у меня есть варианты для этого? Есть ли простой способ выполнить «пробный запуск» УДАЛЕНИЯ?
sql-server
sql-server-2008
sql-server-2005
Джей Салливан
источник
источник
Ответы:
Если вашей целью является обработка всех удалений, только если все они выполнены успешно, почему бы просто не использовать TRY / CATCH:
Если цель состоит в том, чтобы все успешные удаления были успешными, даже если один или несколько не удастся выполнить, вы можете использовать отдельные TRY / CATCH, например
источник
Один из вариантов - начать транзакцию, запустить удаление, а затем всегда выполнять откат:
источник
Я хотел бы улучшить решение, предоставляемое Аароном Бертраном, с помощью некоторого кода, на случай, если вы захотите добавить любой элемент таблицы, управляя исключениями, чтобы игнорировать сбои или также останавливать процесс после ошибок.
Этот выберет записи из таблицы и затем попытается удалить их без исключений:
источник