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.
[sql]
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
[/sql]
Oluşturmuş olduğumuz “SayHello” sp’mizi SQL Server 2016 ile birlikte gelen kullanım şekli ile siliyoruz.
[sql]
DROP PROCEDURE IF EXISTS SayHello
[/sql]
SQL Server 2016 öncesi sürümlerinde yukarıdaki işlemleri aşağıdaki yöntemle yapabiliyoruz.
[sql]
IF OBJECT_ID(‘SQLNews.dbo.SayHello’) IS NOT NULL
BEGIN
DROP PROCEDURE SayHello
END
[/sql]
SQL Server 2016 öncesi sürümlerinde IF EXISTS ile bir Stored Procedure‘nin var olup olmadığını bulmak istersek;
[sql]
IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name=’SayHello’)
BEGIN
DROP PROCEDURE SayHello
END
[/sql]
Yukarıdaki stored procedure örneklerinde olduğu gibi aynı şekilde Tablo,View,Database vb. diğer nesneleri de IF EXISTS komutunu kullanarak silebilirsiniz.
[sql]
DROP TABLE IF EXISTS cdUsers
[/sql]
[sql]
USE master
GO
DROP DATABASE IF EXISTS SQLNews
[/sql]