Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pemeriksaan kendala:TRY/CATCH vs Exists()

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bandingkan DATETIME dan DATE dengan mengabaikan porsi waktu

  2. JPA SQL Server Tidak ada pemetaan Dialek untuk tipe JDBC:-9

  3. Secara Otomatis Jatuhkan dan Buat kembali indeks saat ini

  4. cara memeriksa keunikan (non duplikasi) dari sebuah posting di rss feed

  5. SQL Server Setara dengan GROUP_CONCAT()