Chciałbym móc przewidzieć, czy operacja DELETE spowoduje naruszenie ograniczenia, bez faktycznego wykonania operacji usuwania.
Jakie są moje opcje? Czy istnieje prosty sposób na wykonanie „próbnego uruchomienia” USUŃ?
sql-server
sql-server-2008
sql-server-2005
Jay Sullivan
źródło
źródło
Odpowiedzi:
Jeśli Twoim celem jest przetworzenie wszystkich usunięć tylko wtedy, gdy wszystkie zakończą się powodzeniem, dlaczego nie użyć po prostu TRY / CATCH:
Jeśli celem jest umożliwienie pomyślnego usunięcia wszystkich sukcesów, nawet jeśli jedno lub więcej zakończy się niepowodzeniem, możesz użyć pojedynczej TRY / CATCH, np.
źródło
Jedną z opcji jest rozpoczęcie transakcji, uruchomienie operacji usuwania, a następnie zawsze wycofywanie:
źródło
Chciałbym ulepszyć rozwiązanie dostarczone przez Aarona Bertranda z pewnym kodem, na wypadek gdybyś chciał spróbować dodać dowolny element tabeli, zarządzanie wyjątkami do ignorowania kończy się niepowodzeniem lub zatrzymanie procesu po błędach.
Ten wybierze rekordy z tabeli, a następnie spróbuje je usunąć bez wyjątków:
źródło