Saya ingin dapat memprediksi apakah DELETE akan mengalami pelanggaran kendala, tanpa benar-benar melakukan penghapusan.
Apa pilihan saya untuk melakukan ini? Apakah ada cara sederhana untuk melakukan "dry run" dari DELETE?
sql-server
sql-server-2008
sql-server-2005
Jay Sullivan
sumber
sumber
Jawaban:
Jika tujuan Anda adalah untuk memproses semua penghapusan hanya jika semuanya berhasil, mengapa tidak menggunakan TRY / CATCH:
Jika tujuannya adalah untuk memungkinkan semua penghapusan yang berhasil berhasil bahkan jika satu atau lebih akan gagal, maka Anda dapat menggunakan TRY / CATCH individu, misalnya
sumber
Salah satu opsi adalah memulai transaksi, menjalankan penghapusan Anda, dan kemudian selalu mengembalikan:
sumber
Saya ingin meningkatkan solusi yang disediakan oleh Aaron Bertrand dengan beberapa kode, jika Anda ingin mencoba menambahkan elemen tabel, mengelola pengecualian untuk mengabaikan gagal atau juga menghentikan proses setelah kesalahan.
Yang ini akan memilih catatan dari tabel dan kemudian mencoba untuk menghapusnya tanpa kecuali:
sumber