Com s'utilitza DROP SI EXISTEIX a SQL Server?



Proveu El Nostre Instrument Per Eliminar Problemes

En aquest article es parla de 'GOTA SI EXISTEIX' declaració disponible a SQL Server 2016 i versions posteriors. 'SI SURT' és la darrera clàusula opcional afegida a la sentència DROP existent a SQL Server 2016 i versions posteriors. Bàsicament, el 'GOTA SI EXISTEIX' L'opció s'utilitza quan és necessari comprovar si una entitat roman a una base de dades abans de crear-la o eliminar-la. En aquest cas, primer deixarem caure l’objecte de base de dades existent i el recrearem amb canvis si cal.



Per tant, impedeix l’antiga forma d’escriure si condició i dins de la condició if escriu una declaració per provar la presència de l’objecte per deixar-la caure. Si no es produeix, es continuarà executant la següent sentència del lot. Però si intentem deixar caure un objecte que no existeix, generarà un missatge d'error com es mostra a continuació.



Executeu la consulta següent.



taula desplegable dbo.comempresa

La sortida serà així.

L'error es produeix en deixar caure l'objecte de base de dades que no existeix

Sintaxi

'DROP tipus_objecte [SI EXISTEIX] nom_objecte'

Arguments

TIPUS_OBJECTE:



El tipus d'objecte pot ser qualsevol de la base de dades, activador, assemblatge, seqüència, índex, taula, vista de procediment, funció, etc.

SI EXISTEIX:

És una clàusula opcional i, si s’esmenta a la sentència DROP, comprovarà l’existència de l’objecte, si existeix caurà, en cas contrari continuarà executant la següent sentència al bloc sense produir cap error.

Ara, amb la introducció del nou mètode 'DROP IF EXISTS' a SQL Server 2016, els desenvolupadors poden escriure un codi breu.

En primer lloc, creeu una base de dades anomenada 'appuals'.

Creació d’una base de dades

Ara, crearem una taula per deixar-la executar amb el següent codi.

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

La sortida serà la següent.

Creació de taules

A més, creeu un procediment de botiga per deixar-lo servir amb el codi següent.

USAR [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Crear PROCEDIMENT [dbo]. [Sp_temp] COM COMENÇA A CONFIGURAR NOCOCONT; SELECT * de dbo.temp; FINAL

La sortida serà la següent.

Creació de procediment de magatzem

Mètode antic: abans que SQL Server fes servir drop si surt a objectes de base de dades

L'ús del mètode DROP IF EXISTS abans de SQL Server 2016 requeria escriure un codi d'embolcall d'instruccions IF llarg.

Deixa anar la taula si existeix

El mètode previ per deixar caure una taula és el següent.

Si utilitzem SQL Server 2015 o versions anteriors, hem d’executar el següent grup de codi.

Si (OBJECT_ID ('dbo.temp') no és nul), elimineu la temperatura de la taula

La sortida serà la següent.

Deixant caure la taula

Ara, la seva sintaxi és bastant confusa, de manera que, si no us agrada i utilitzeu SQL Server 2016 o versions posteriors, podeu optar per la declaració DROP IF EXIST simple en comptes d’envasos grans.

Procediment de botiga de caiguda si existeix:

Per deixar enrere el procediment, hem d’escriure una sentència condicional per comprovar si el procediment de magatzem existeix o no i, a continuació, escriure la sentència drop. En cas contrari, generarà un error en cas que no existeixi el procediment emmagatzemat.

Ara executeu les sentències següents per deixar enrere el procediment en versions inferiors a SQL Server 2016.

SI EXISTEIX (SELECCIONA 1 DE sys.procedures WHERE Name = 'sp_temp') PROCEDIMENT DE GOTA dbo.sp_temp

La sortida serà així.

Elimineu el procediment mitjançant l'antic mètode de codi if wrapper

Eliminar la base de dades si existeix:

Si utilitzeu versions anteriors de SQL Server, haureu d'executar el codi següent per deixar caure la base de dades.

SI DB_ID ('appuals') NO ÉS NULL COMENÇA LA DROP DATABASE BASE DE DADES

La sortida serà la següent.

Suprimiu la base de dades mitjançant un mètode antic

Nou mètode: DROP IF EXISTS compatible amb SQL Server 2016 i versions superiors

Per deixar caure un objecte de base de dades a SQL Server 2016 i versions posteriors, hem d'executar una sentència senzilla.

Deixa anar la taula si existeix:

Podem escriure una declaració tal com es mostra a continuació a SQL Server 2016 per eliminar una taula emmagatzemada si existeix.

CAUÇA TAULA SI EXISTEIX dbo.temp

La sortida serà així.

Elimineu la taula mitjançant el mètode nou

Procediment de caiguda si existeix:

Ara deixarem anar el procediment emmagatzemat que vam crear al començament de l'article executant el següent codi.

PROCEDIMENT DE GOTA SI EXISTEIX dbo.sp_temp

La sortida serà la següent.

Elimineu la taula mitjançant el mètode nou

Pel que fa a la sintaxi, aquesta afirmació senzilla és fàcil d’entendre i de recordar. De la mateixa manera, podem seguir el mateix procediment per deixar caure altres objectes de base de dades.

Eliminar la base de dades si existeix:

Executeu el codi següent si voleu deixar caure la base de dades mitjançant la comprovació de si existeix

Utilitzeu la base de dades MASTER GO DROP SI EXISTEIX appuals

La sortida serà la següent.

Suprimiu la base de dades mitjançant el nou mètode

L’avantatge d’utilitzar aquest mètode és que si la base de dades no existeix, no causarà cap error, la següent sentència del lot es continuarà executant. Intentem tornar a deixar anar la base de dades ja abandonada.

L'error es produeix en tornar a deixar anar la base de dades ja abandonada.

De la mateixa manera, podem eliminar índexs, vistes, seqüències, muntatges, etc. de la base de dades.

3 minuts de lectura