Este artigo discute o “DROP IF EXISTS” declaração disponível no SQL Server 2016 e versões posteriores. “SE SAIR” é a cláusula opcional mais recente adicionada na instrução DROP existente no SQL Server 2016 e versões posteriores. Essencialmente, o “DROP IF EXISTS” A opção é usada quando é necessário verificar se uma entidade permanece em um banco de dados antes de ser criada ou eliminada. Nesse caso, vamos primeiro eliminar o objeto de banco de dados existente e, em seguida, recriá-lo com as alterações, se necessário.
Assim, evita a velha maneira de escrever a condição if e dentro da condição if escrever uma declaração para testar a presença do objeto para eliminá-lo. Se isso não ocorrer, a próxima instrução do lote continuará a ser executada. Mas se tentarmos eliminar um objeto que não existe, será exibida uma mensagem de erro conforme mostrado abaixo.
Execute a seguinte consulta.
drop table dbo.company
A saída será assim.
O erro surge ao eliminar o objeto de banco de dados que não existe
Sintaxe
“DROP object_type [IF EXISTS] object_name”
Argumentos
TIPO DE OBJETO:
O tipo de objeto pode ser qualquer um do banco de dados, gatilho, montagem, sequência, índice, tabela, visualização de procedimento, função, etc.
SE EXISTIR:
É uma cláusula opcional e se for mencionada na instrução DROP, irá verificar a existência do objeto, se existir irá cair, caso contrário, continuará a executar a próxima instrução do bloco sem produzir erros.
Agora, com a introdução do novo método “DROP IF EXISTS” no SQL Server 2016, os desenvolvedores podem escrever um código breve.
Primeiro, crie um banco de dados denominado “appuals”.
Criação de um banco de dados
Agora, criaremos uma tabela a ser eliminada executando o seguinte código.
use [appuals] Go CREATE TABLE temp (id INT, name varchar (100)); IR
A saída será a seguinte.
Criação de mesa
Além disso, crie um procedimento de armazenamento a ser eliminado usando o código a seguir.
USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Criar PROCEDURE [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECT * de dbo.temp; FIM
A saída será como abaixo.
Criação de procedimento de armazenamento
Método antigo: antes de usar o SQL Server, soltar se sai em objetos de banco de dados
O uso do método DROP IF EXISTS antes do SQL Server 2016 exigia a gravação de um código de wrappers de instrução IF extenso.
Drop table se existir
O método anterior de descartar uma tabela é o seguinte.
Se estivermos usando o SQL Server 2015 ou anterior, precisamos executar o seguinte grupo de código.
If (OBJECT_ID ('dbo.temp') Não é Nulo) Eliminar Temp da Tabela
A saída será a seguinte.
Largando a mesa
Agora, sua sintaxe é bastante confusa, então se você não gostar e estiver usando o SQL Server 2016 ou superior, pode usar a instrução DROP IF EXIST simples em vez de grandes wrappers.
Procedimento de descarte, se houver:
Para eliminar o procedimento, temos que escrever uma instrução condicional para verificar se o procedimento de armazenamento existe ou não e, em seguida, escrever a instrução drop. Caso contrário, ele gerará um erro caso o procedimento armazenado não exista.
Agora execute as seguintes instruções para descartar o procedimento em versões anteriores ao SQL Server 2016.
IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp
A saída será assim.
Abandone o procedimento usando o método antigo do código if wrapper
Elimine o banco de dados, se existir:
Se estiver usando versões anteriores do SQL Server, você precisará executar o código a seguir para eliminar o banco de dados.
SE DB_ID ('appuals') NÃO É NULO BEGIN DROP DATABASE appuals END
A saída será a seguinte.
Elimine o banco de dados usando um método antigo
Novo método: DROP IF EXISTS com suporte no SQL Server 2016 e versão superior
Para descartar um objeto de banco de dados no SQL Server 2016 e superior, precisamos executar uma instrução simples.
Eliminar tabela, se existir:
Podemos escrever uma declaração como a seguir no SQL Server 2016 para remover uma tabela armazenada se ela existir.
DROP TABLE IF EXISTS dbo.temp
A saída será assim.
Abandone a tabela usando o novo método
Procedimento de descarte, se houver:
Agora vamos eliminar o procedimento armazenado que criamos no início do artigo, executando o código a seguir.
PROCEDIMENTO DE QUEDA SE EXISTIR dbo.sp_temp
A saída será como abaixo.
Abandone a tabela usando o novo método
No que diz respeito à sintaxe, essa declaração simples é fácil de entender e lembrar. Da mesma forma, podemos seguir o mesmo procedimento para eliminar outros objetos de banco de dados.
Elimine o banco de dados, se existir:
Execute o código a seguir se quiser descartar o banco de dados usando a verificação se existe
USE MASTER GO DROP DATABASE SE EXISTIR appuals
A saída será como abaixo.
Elimine o banco de dados usando o novo método
A vantagem de usar este método é que, se o banco de dados não existir, ele não causará nenhum erro, a próxima instrução do lote continuará a ser executada. Vamos tentar eliminar novamente o banco de dados já descartado.
O erro surge ao eliminar novamente o banco de dados já eliminado.
Da mesma forma, podemos remover índices, visualizações, sequências, montagens, etc. do banco de dados.
3 minutos lidos