Di SQL Server, jika Anda mencoba menjatuhkan objek yang tidak ada, Anda akan mendapatkan kesalahan. Jika Anda tidak ingin mendapatkan kesalahan, Anda harus menambahkan beberapa kode tambahan untuk memeriksa keberadaan objek.
Sebelum SQL Server 2016, Anda perlu menambahkan IF
pernyataan yang menanyakan objek sistem yang relevan untuk mengetahui apakah objek itu ada atau tidak.
Dari SQL Server 2016, Anda sekarang dapat menggunakan metode baru yang lebih bersih untuk memeriksa apakah ada objek. Kami akan menyebutnya DROP IF EXISTS
(atau dikenal sebagai “MATI”).
Contoh 1 – Sintaks Dasar
Sintaks sebenarnya tidak mengandung DROP IF EXISTS
string seperti itu. Yang perlu Anda lakukan adalah memasukkan jenis objek di antara DROP
dan IF
.
DROP TABLE IF EXISTS Customers
Dalam hal ini, saya menjatuhkan tabel, jadi kata TABLE
disisipkan di antara DROP
dan IF
. Nama meja yang ingin saya taruh (dalam hal ini Pelanggan ) ditempatkan di akhir.
Contoh 2 – Demo Dasar
Berikut ini contoh membuat database, lalu menghapusnya, lalu mencoba menghapusnya lagi.
CREATE DATABASE Homer; GO DROP DATABASE IF EXISTS Homer; GO DROP DATABASE IF EXISTS Homer; GO
Hasil:
Started executing query at Line 17 Commands completed successfully. Started executing query at Line 19 Commands completed successfully. Started executing query at Line 21 Commands completed successfully.
Tidak ada kesalahan yang terjadi, meskipun saya mencoba untuk menjatuhkan objek yang tidak ada di baris ketiga.
Contoh 3 – Tanpa JIKA ADA
Ini dia lagi, kecuali kali ini saya hapus IF EXISTS
bagian.
CREATE DATABASE Homer; GO DROP DATABASE Homer; GO DROP DATABASE Homer; GO
Hasil:
Started executing query at Line 17 Commands completed successfully. Started executing query at Line 19 Commands completed successfully. Started executing query at Line 21 Msg 3701, Level 11, State 1, Line 5 Cannot drop the database 'Homer', because it does not exist or you do not have permission.
Dalam hal ini saya mendapatkan kesalahan, karena mencoba menjatuhkan objek yang tidak ada.
Contoh 4 – Kolom dan Batasan
Anda juga dapat menggunakan DIE pada kolom dan batasan.
Misalnya, Anda dapat menggunakan DROP COLUMN IF EXISTS
dalam ALTER TABLE
pernyataan.
Ini contohnya.
DROP TABLE IF EXISTS DieTest; GO CREATE TABLE DieTest ( DieTestId uniqueidentifier NOT NULL DEFAULT NEWID(), DieTestName varchar(70), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE() ); GO ALTER TABLE DieTest DROP COLUMN IF EXISTS DieTestName; GO ALTER TABLE DieTest DROP COLUMN IF EXISTS DieTestName; GO
Hasil:
Started executing query at Line 1 Commands completed successfully. Started executing query at Line 3 Commands completed successfully. Started executing query at Line 11 Commands completed successfully. Started executing query at Line 15 Commands completed successfully.
Contoh 5 – Sebelum SQL Server 2016
Sebelum SQL Server 2016, untuk menguji keberadaan objek, Anda perlu melakukan sesuatu seperti ini:
IF DB_ID('Homer') IS NOT NULL DROP DATABASE Homer;
Contoh itu menggunakan DB_ID()
karena kita berurusan dengan database. Jika objek adalah tipe yang berbeda, Anda mungkin perlu menggunakan OBJECT_ID()
fungsi atau sesuatu yang lain sama sekali.
Misalnya:
IF OBJECT_ID('dbo.Customers, 'U') IS NOT NULL DROP TABLE dbo.Customers; IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'MyTrigger') DROP TRIGGER MyTrigger
Setelah kita mulai melihat kode ini, kita dapat melihat mengapa DROP IF EXISTS
adalah tambahan sambutan untuk sintaks T-SQL.
Objek yang Layak
DIE dapat digunakan pada objek berikut.
AGREGAT
PROSEDUR
TABEL
PERAKITAN
PERAN
PEMICU
LIHAT
ATURAN
JENIS
DATABASE
SKEMA
PENGGUNA
DEFAULT
KEBIJAKAN KEAMANAN
LIHAT
FUNGSI
URUTAN
INDEKS
SINONIM
Seperti disebutkan, DIE juga dapat digunakan pada kolom dan batasan saat menggunakan ALTER TABLE
pernyataan:
- UBAH TABLE DROP COLUMN JIKA ADA
- UBAH TABEL DROP CONSTRAINT JIKA ADA