¿Cómo usar DROP IF EXISTS en SQL Server?



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

Este artículo analiza el 'SOLTAR SI EXISTE' declaración disponible en SQL Server 2016 y versiones posteriores. 'SI SALGA' es la última cláusula opcional agregada en la declaración DROP existente en SQL Server 2016 y versiones posteriores. Esencialmente, el 'SOLTAR SI EXISTE' La opción se utiliza cuando es necesario comprobar si una entidad permanece en una base de datos antes de crearla o eliminarla. En este caso, primero eliminaremos el objeto de base de datos existente y luego lo volveremos a crear con cambios si es necesario.



Por lo tanto, evita la forma antigua de escribir la condición if y dentro de la condición if escribir una declaración para probar la presencia del objeto para eliminarlo. Si no ocurre, se seguirá ejecutando la siguiente instrucción del lote. Pero si intentamos eliminar un objeto que no existe, generará un mensaje de error como se muestra a continuación.



Ejecute la siguiente consulta.



drop table dbo.company

La salida será así.

El error surge al soltar el objeto de la base de datos que no existe

Sintaxis

'DROP object_type [IF EXISTS] object_name'

Argumentos

TIPO DE OBJETO:



El tipo de objeto puede ser cualquiera de la base de datos, disparador, ensamblaje, secuencia, índice, tabla, vista de procedimiento, función, etc.

SI EXISTE:

Es una cláusula opcional y si se menciona en la instrucción DROP, verificará la existencia del objeto, si existe lo eliminará, de lo contrario continuará ejecutando la siguiente instrucción en el bloque sin producir ningún error.

Ahora, con la introducción del nuevo método 'DROP IF EXISTS' en SQL Server 2016, los desarrolladores pueden escribir código breve.

Primero, cree una base de datos llamada 'appuals'.

Creando una base de datos

Ahora, crearemos una tabla que se eliminará ejecutando el siguiente código.

use [appuals] Go CREATE TABLE temp (id INT, nombre varchar (100)); VAMOS

La salida será la siguiente.

Creación de tablas

Además, cree un procedimiento de tienda que se eliminará utilizando el siguiente código.

USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Crear PROCEDIMIENTO [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECCIONAR * de dbo.temp; FIN

La salida será la siguiente.

Creación de procedimientos de tienda

Método antiguo: antes de que SQL Server usara drop if sale en objetos de base de datos

El uso del método DROP IF EXISTS antes de SQL Server 2016 requería escribir un código extenso de envoltorios de instrucciones IF.

Drop table si existe

El método anterior para dejar caer una mesa es el siguiente.

Si usamos SQL Server 2015 o una versión anterior, debemos ejecutar el siguiente grupo de código.

Si (OBJECT_ID ('dbo.temp') no es nulo) Drop Table temp

La salida será la siguiente.

Dejando caer la mesa

Ahora su sintaxis es bastante confusa, por lo que si no le gusta y está utilizando SQL Server 2016 o superior, puede optar por una declaración simple DROP IF EXIST en lugar de grandes contenedores.

Drop store procedimiento si existe:

Para eliminar el procedimiento, tenemos que escribir una declaración condicional para verificar si el procedimiento de almacenamiento existe o no y luego escribir la declaración de caída. De lo contrario, generará un error en caso de que el procedimiento almacenado no exista.

Ahora ejecute las siguientes declaraciones para eliminar el procedimiento en versiones anteriores a SQL Server 2016.

SI EXISTE (SELECCIONE 1 DE sys.procedures DONDE Nombre = 'sp_temp') DEJAR PROCEDIMIENTO dbo.sp_temp

La salida será así.

Elimine el procedimiento utilizando el método antiguo de código contenedor if

Elimine la base de datos si existe:

Si está utilizando versiones anteriores de SQL Server, debe ejecutar el siguiente código para eliminar la base de datos.

SI DB_ID ('appuals') NO ES NULO COMIENZA DROP DATABASE appuals END

La salida será la siguiente.

Suelta la base de datos usando un método antiguo

Nuevo método: DROP IF EXISTS compatible con SQL Server 2016 y versiones posteriores

Para colocar un objeto de base de datos en SQL Server 2016 y superior, necesitamos ejecutar una declaración simple.

Drop table si existe:

Podemos escribir una declaración como se muestra a continuación en SQL Server 2016 para eliminar una tabla almacenada si existe.

DROP TABLE SI EXISTE dbo.temp

La salida será así.

Suelta la tabla usando el nuevo método

Procedimiento de abandono si existe:

Ahora soltaremos el procedimiento almacenado que creamos al comienzo del artículo ejecutando el siguiente código.

PROCEDIMIENTO DE SOLICITUD SI EXISTE dbo.sp_temp

La salida será la siguiente.

Suelta la tabla usando el nuevo método

En lo que respecta a la sintaxis, esta simple declaración es fácil de entender y fácil de recordar. Del mismo modo, podemos seguir el mismo procedimiento para eliminar otros objetos de la base de datos.

Elimine la base de datos si existe:

Ejecute el siguiente código si desea eliminar la base de datos utilizando la verificación si existe

USE MASTER GO DROP DATABASE SI EXISTE APLICACIONES

La salida será la siguiente.

Suelta la base de datos usando el nuevo método

El beneficio de usar este método es que si la base de datos no existe, no causará ningún error, la siguiente declaración del lote continuará ejecutándose. Intentemos volver a eliminar la base de datos ya eliminada.

El error surge al volver a eliminar la base de datos ya eliminada.

Del mismo modo, podemos eliminar índices, vistas, secuencias, ensamblajes, etc. de la base de datos.

3 minutos de lectura