SQL Server 2016 – DROP IF EXISTS
SQL Server 2016 ile gelen yeniliklerden, IF EXISTS koşulu DROP komutu ile birlikte opsiyonel olarak kullanılabilir hale geldi. Basitçe IF EXISTS belirtilen nesnenin var olup olmadığı bilgisini döndüren bir komuttur.
SQL Server 2016 ile birlikte gelen bu komutun sözdizimi aşağıdaki gibidir;
DROP OBJECT_TYPE [IF EXISTS] OBJECT_NAME
Örnek olması açısından aşağıdaki gibi bir veritabanı,tablo ve stored procedure oluşturuyorum.
CREATE DATABASE SQLNews GO USE SQLNews GO CREATE TABLE cdUsers (Id INT,Name varchar(50)) GO CREATE PROC SayHello AS SELECT 'Hello SQL Server 2016' GO
Oluşturmuş olduğumuz “SayHello” sp’mizi SQL Server 2016 ile birlikte gelen kullanım şekli ile siliyoruz.
DROP PROCEDURE IF EXISTS SayHello
SQL Server 2016 öncesi sürümlerinde yukarıdaki işlemleri aşağıdaki yöntemle yapabiliyoruz.
IF OBJECT_ID('SQLNews.dbo.SayHello') IS NOT NULL BEGIN DROP PROCEDURE SayHello END
SQL Server 2016 öncesi sürümlerinde IF EXISTS ile bir Stored Procedure‘nin var olup olmadığını bulmak istersek;
IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name='SayHello') BEGIN DROP PROCEDURE SayHello END
Yukarıdaki stored procedure örneklerinde olduğu gibi aynı şekilde Tablo,View,Database vb. diğer nesneleri de IF EXISTS komutunu kullanarak silebilirsiniz.
DROP TABLE IF EXISTS cdUsers
USE master GO DROP DATABASE IF EXISTS SQLNews