In SQL Server 2016, IF EXISTS is the new optional clause introduced in the existing DROP statement. Basicamente, ele verifica a existência do objeto, se o objeto existe ele o deixa cair e se ele não existe ele vai continuar executando a próxima declaração no lote. Basicamente evita a escrita se a condição e dentro da condição escrever uma declaração para verificar a existência do objeto.,
sintaxe:
DROP OBJECT_TYPE OBJECT_NAME
em que: OBJECT_TIPO como Tabela, procedimento, Vista, função, Base de dados, gatilho, conjunto, sequência, Índice, etc.
se existir: é uma cláusula opcional e se for mencionada na declaração de largada, então verifica a existência do objecto, se existir irá cair de outra forma continua a executar a próxima declaração no bloco sem levantar quaisquer problemas.
vamos entender esta nova cláusula se existe na declaração DROP com uma extensa lista de exemplos., Para demonstrar esta cláusula vamos primeiro criar um banco de dados de amostra com uma tabela e um procedimento armazenado.
CREATE DATABASE SqlHintsDemoDBGOUSE SqlHintsDemoDBGOCREATE TABLE dbo.Customers (Id INT, Name Nvarchar(50))GOCREATE PROCEDURE dbo.WelcomeMessageASSELECT 'Welcome to Sql Server'GO
DROP Stored Procedure IF EXISTS
How to check if a Stored Procedure exists
In SQL Server 2016 we can write a statement like below to drop a Stored Procedure if exists.
DROP PROCEDURE IF EXISTS dbo.WelcomeMessage
, Vamos tentar voltar a largar a mensagem de Boas-Vindas do procedimento armazenado, que já foi descartada.
a Partir do resultado, é claro que ele não vai levantar qualquer erro se o procedimento armazenado não existe, ele irá continuar a executar a próxima instrução no lote.
nas versões anteriores do servidor Sql usamos uma declaração como abaixo para largar o procedimento armazenado se existir.,
IF EXISTS(SELECT 1 FROM sys.procedures WHERE Name = 'WelcomeMessage')BEGIN DROP PROCEDURE dbo.WelcomeMessageEND
Você pode ir até o artigo Como verificar se um Procedimento Armazenado existe para ver várias opções em versões anteriores do Sql Server para verificar a existência de um Procedimento Armazenado.
DROP TABLE IF EXISTS
How to check if a Table exists
In SQL Server 2016 we can write a statement like below to drop a Table if exists.,
DROP TABLE IF EXISTS dbo.Customers
Vamos tentar voltar a largar o dbo da mesa.Clientes que já foram descartados.
a Partir do resultado, é claro que ele não vai levantar qualquer erro se a Tabela não existir, ele irá continuar a executar a próxima instrução no lote.,
nas versões anteriores do servidor Sql usamos uma declaração como abaixo para largar a tabela se existir.
IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U')BEGIN DROP TABLE dbo.CustomersEND
Você pode ir até o artigo Como verificar se existir uma Tabela para ver várias opções em versões anteriores do Sql Server para verificar a existência de uma Tabela.
DROP DataBase IF EXISTS
How to check if a Database exists
In SQL Server 2016 we can write a statement like below to drop a DataBase if exists.,
USE MASTERGODROP DATABASE IF EXISTS SqlHintsDemoDB
Vamos tentar reler a base de dados SqlHintsDemoDB que já foi descartada.
a Partir do resultado, é evidente que ele não vai levantar qualquer erro se o Banco de dados não existir, ele irá continuar a executar a próxima instrução no lote.,
nas versões anteriores do servidor Sql usamos uma declaração como abaixo para largar a base de dados se existir.
IF DB_ID('SqlHintsDemoDB') IS NOT NULLBEGIN DROP DATABASE SqlHintsDemoDBEND
pode ler o artigo Como verificar se existe uma base de dados para ver várias opções nas versões anteriores do servidor Sql para verificar a existência de uma base de dados.,ISJSON Função no Sql Server 2016