Виждал съм тази статия, но имайте предвид, че за ниски нива на отказ бих предпочел модела "JFDI". Използвал съм това на системи с голям обем преди (40 000 реда/секунда).
В кода на Aaron все още можете да получите дубликат, когато тествате първо при голямо натоварване и много записи. (обяснено тук на dba.se ) Това е важно:вашите дубликати все още се случват, но по-рядко. Все още се нуждаете от обработка на изключения и да знаете кога да игнорирате дублиращата се грешка (2627)
Редактиране:обяснено накратко от Remus в друг отговор
Въпреки това бих имал отделен TRY/CATCH за тестване само за дублиращата се грешка
BEGIN TRY
-- stuff
BEGIN TRY
INSERT etc
END TRY
BEGIN CATCH
IF ERROR_NUMBER() <> 2627
RAISERROR etc
END CATCH
--more stuff
BEGIN CATCH
RAISERROR etc
END CATCH