Bagaimana cara menggunakan DROP JIKA ADA di SQL Server?



Coba Instrumen Kami Untuk Menghilangkan Masalah

Artikel ini membahas “LEPAS JIKA ADA” pernyataan tersedia di SQL Server 2016 dan versi yang lebih baru. “JIKA KELUAR” adalah klausa opsional terbaru yang ditambahkan dalam pernyataan DROP yang ada di SQL Server 2016 dan versi yang lebih baru. Pada dasarnya, file “LEPAS JIKA ADA” opsi digunakan ketika diperlukan untuk memeriksa apakah entitas tetap berada dalam database sebelum dibuat atau dijatuhkan. Dalam kasus ini, pertama-tama kita akan melepaskan objek database yang ada dan kemudian membuatnya kembali dengan perubahan jika diperlukan.



Dengan demikian, ini mencegah cara lama menulis if condition dan di dalam if condition menulis pernyataan untuk menguji keberadaan objek untuk menjatuhkannya. Jika tidak terjadi, pernyataan berikutnya dalam batch akan terus dijalankan. Namun jika kita mencoba menjatuhkan objek yang tidak ada maka akan muncul pesan error seperti gambar di bawah ini.



Jalankan kueri berikut.



drop table dbo.company

Outputnya akan seperti ini.

Kesalahan muncul saat menjatuhkan objek database yang tidak ada

Sintaksis

“DROP object_type [IF EXISTS] object_name”

Argumen

OBJECT_TYPE:



Tipe objek bisa siapa saja dari database, trigger, assembly, sequence, index, table, procedure view, function, dll.

JIKA ADA:

Ini adalah klausa opsional dan jika disebutkan dalam pernyataan DROP, itu akan memeriksa keberadaan objek, jika ada itu akan turun, jika tidak maka akan terus mengeksekusi pernyataan berikutnya di blok tanpa menghasilkan kesalahan apa pun.

Sekarang dengan pengenalan metode baru 'DROP JIKA ADA' di SQL Server 2016, pengembang dapat menulis kode singkat.

Pertama, buat database bernama 'appuals'.

Membuat database

Sekarang, kita akan membuat tabel untuk dijatuhkan dengan menjalankan kode berikut.

menggunakan [appuals] Pergi CREATE TABLE temp (id INT, nama varchar (100)); PERGILAH

Outputnya adalah sebagai berikut.

Pembuatan tabel

Selanjutnya, buat prosedur penyimpanan untuk dijatuhkan menggunakan kode berikut.

GUNAKAN [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Buat PROSEDUR [dbo]. [Sp_temp] SEBAGAI MULAI ATUR NOCOUNT ON; PILIH * dari dbo.temp; AKHIR

Outputnya akan seperti di bawah ini.

Pembuatan prosedur penyimpanan

Metode lama: Sebelum SQL Server menggunakan drop jika keluar pada objek database

Menggunakan metode DROP IF EXISTS sebelum SQL Server 2016 diperlukan penulisan kode pembungkus pernyataan IF yang panjang.

Drop table jika ada

Metode sebelumnya untuk menjatuhkan tabel adalah sebagai berikut.

Jika kita menggunakan SQL Server 2015 atau lebih awal dari yang kita butuhkan untuk mengeksekusi sekelompok kode berikut.

Jika (OBJECT_ID ('dbo.temp') Is Not Null) Drop Table temp

Outputnya adalah sebagai berikut.

Menjatuhkan meja

Sekarang sintaksnya cukup membingungkan jadi jika Anda tidak menyukainya dan Anda menggunakan SQL Server 2016 atau yang lebih baru, Anda dapat menggunakan pernyataan DROP JIKA ADA sederhana alih-alih bungkus besar.

Prosedur drop store jika ada:

Untuk membatalkan prosedur, kita harus menulis pernyataan bersyarat untuk memeriksa apakah prosedur penyimpanan ada atau tidak kemudian menulis pernyataan drop. Jika tidak, itu akan menimbulkan kesalahan jika prosedur yang tersimpan tidak ada.

Sekarang jalankan pernyataan berikut untuk membatalkan prosedur di versi yang lebih rendah dari SQL Server 2016.

JIKA ADA (PILIH 1 DARI sys.procedures WHERE Name = 'sp_temp') DROP PROSEDUR dbo.sp_temp

Outputnya akan seperti ini.

Jatuhkan prosedur dengan menggunakan metode lama jika kode pembungkus

Jatuhkan database jika ada:

Jika Anda menggunakan versi SQL Server sebelumnya, Anda perlu menjalankan kode berikut untuk menghapus database.

JIKA DB_ID ('appuals') TIDAK NULL MULAI DROP DATABASE appuals END

Outputnya adalah sebagai berikut.

Jatuhkan database dengan menggunakan metode lama

Metode baru: DROP JIKA ADA didukung di SQL Server 2016 dan versi yang lebih baru

Untuk menjatuhkan objek database di SQL Server 2016 dan di atasnya, kita perlu menjalankan pernyataan sederhana.

Drop table jika ada:

Kami dapat menulis pernyataan seperti di bawah ini di SQL Server 2016 untuk menghapus tabel yang disimpan jika ada.

DROP TABLE JIKA ADA dbo.temp

Outputnya akan seperti ini.

Taruh tabel dengan menggunakan metode baru

Prosedur jatuhkan jika ada:

Sekarang kita akan menghentikan prosedur tersimpan yang kita buat di awal artikel dengan menjalankan kode berikut.

PROSEDUR DROP JIKA ADA dbo.sp_temp

Outputnya akan seperti di bawah ini.

Taruh tabel dengan menggunakan metode baru

Sejauh menyangkut sintaksis, pernyataan sederhana ini mudah dimengerti dan mudah diingat. Demikian pula, kita dapat mengikuti prosedur yang sama untuk menjatuhkan objek database lainnya.

Jatuhkan database jika ada:

Jalankan kode berikut jika Anda ingin menjatuhkan database dengan menggunakan jika ada centang

GUNAKAN DATABASE MASTER GO DROP JIKA ADA aplikasi

Outputnya akan seperti di bawah ini.

Jatuhkan database dengan menggunakan metode baru

Manfaat menggunakan metode ini adalah jika database tidak ada, tidak akan menyebabkan kesalahan apa pun, pernyataan berikutnya dalam batch akan terus dijalankan. Mari kita coba untuk melepaskan kembali database yang sudah dihapus.

Kesalahan muncul saat menjatuhkan kembali database yang sudah dijatuhkan.

Demikian pula, kita dapat menghapus indeks, tampilan, urutan, rakitan, dll. Dari database.

3 menit membaca