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