Eu gostaria de poder prever se um DELETE terá uma violação de restrição, sem realmente executar a exclusão.
Quais são as minhas opções para fazer isso? Existe uma maneira simples de fazer uma "execução a seco" de um DELETE?
sql-server
sql-server-2008
sql-server-2005
Jay Sullivan
fonte
fonte
Respostas:
Se seu objetivo é processar todas as exclusões apenas se todas tiverem êxito, por que não usar TRY / CATCH:
Se o objetivo é permitir que todas as exclusões bem-sucedidas sejam bem-sucedidas, mesmo que uma ou mais falhe, você pode usar TENTAR / PEGAR individualmente, por exemplo
fonte
Uma opção é iniciar uma transação, executar sua exclusão e sempre reverter:
fonte
Gostaria de melhorar a solução fornecida por Aaron Bertrand com algum código, caso você queira adicionar qualquer elemento de uma tabela, gerenciando as exceções para ignorar falhas ou também interromper o processo após erros.
Este selecionará os registros da tabela e tentará excluí-los sem exceções:
fonte