Ich habe diesen Artikel gesehen, aber beachten Sie, dass ich für niedrige Fehlerraten das "JFDI" -Muster bevorzugen würde. Ich habe dies zuvor auf Systemen mit hohem Volumen verwendet (40.000 Zeilen/Sekunde).
In Aarons Code können Sie immer noch ein Duplikat erhalten, wenn Sie zuerst unter hoher Last und vielen Schreibvorgängen testen. (hier erklärt auf dba.se ). ) Dies ist wichtig:Ihre Duplikate treten immer noch auf, nur seltener. Sie müssen immer noch Ausnahmebehandlungen durchführen und wissen, wann Sie den Duplikatfehler (2627) ignorieren müssen
Bearbeiten:kurz und bündig erklärt von Remus in einer anderen Antwort
Ich hätte jedoch ein separates TRY/CATCH zum Testen nur für den doppelten Fehler
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