Saya telah melihat artikel itu tetapi perhatikan bahwa untuk tingkat kegagalan yang rendah saya lebih suka pola "JFDI". Saya telah menggunakan ini pada sistem volume tinggi sebelumnya (40rb baris/detik).
Dalam kode Aaron, Anda masih bisa mendapatkan duplikat saat menguji pertama di bawah beban tinggi dan banyak penulisan. (dijelaskan di sini di dba.se ) Ini penting:duplikat Anda masih terjadi, hanya lebih jarang. Anda masih memerlukan penanganan pengecualian dan mengetahui kapan harus mengabaikan kesalahan duplikat (2627)
Sunting:dijelaskan secara ringkas oleh Remus di jawaban lain
Namun, saya akan memiliki TRY/CATCH terpisah untuk menguji hanya untuk kesalahan duplikat
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