Cum se utilizează DROP IF EXISTS în SQL Server?



Încercați Instrumentul Nostru Pentru Eliminarea Problemelor

Acest articol discută despre „DROP IF EXISTS” declarație disponibilă în SQL Server 2016 și versiunile ulterioare. „Dacă iese” este cea mai recentă clauză opțională adăugată în declarația DROP existentă în SQL Server 2016 și versiunile ulterioare. În esență, „DROP IF EXISTS” opțiunea este utilizată atunci când este necesar să verificați dacă o entitate rămâne într-o bază de date înainte de a fi creată sau eliminată. În acest caz, vom renunța mai întâi la obiectul de bază de date existent și apoi îl vom recrea cu modificări, dacă este necesar.



Astfel, previne vechiul mod de scriere a condiției if și în interiorul condiției if a scrie o declarație pentru a testa prezența obiectului pentru a o arunca. Dacă nu apare, următoarea instrucțiune din lot va continua să fie executată. Dar dacă încercăm să renunțăm la un obiect care nu există, atunci va apărea un mesaj de eroare așa cum se arată mai jos.



Executați următoarea interogare.



drop table dbo.company

Ieșirea va fi așa.

Eroarea apare în timp ce renunțați la obiectul bazei de date care nu există

Sintaxă

„DROP object_type [IF EXISTS] object_name”

Argumente

OBJECT_TYPE:



Tipul de obiect poate fi oricine din baza de date, declanșator, asamblare, secvență, index, tabel, vizualizare procedură, funcție etc.

DACĂ EXISTĂ:

Este o clauză opțională și dacă este menționată în instrucțiunea DROP, va verifica existența obiectului, dacă există va scădea, altfel va continua să execute următoarea instrucțiune din bloc fără a produce erori.

Acum, odată cu introducerea noii metode „DROP IF EXISTS” în SQL Server 2016 dezvoltatorii pot scrie cod scurt.

Mai întâi, creați o bază de date numită „appuals”.

Crearea unei baze de date

Acum, vom crea un tabel care va fi eliminat executând următorul cod.

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

Ieșirea va fi după cum urmează.

Crearea tabelului

Mai mult, creați o procedură de stocare pentru a fi abandonată folosind următorul cod.

UTILIZAȚI [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Creați PROCEDURĂ [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECT * din dbo.temp; SFÂRȘIT

Ieșirea va fi cea de mai jos.

Crearea procedurii de stocare

Metodă veche: înainte de SQL Server folosind drop dacă iese pe obiectele bazei de date

Folosirea metodei DROP IF EXISTS înainte de SQL Server 2016 a necesitat scrierea unui cod lung de ambalare a instrucțiunilor IF.

Plasați masa dacă există

Metoda anterioară de scădere a unui tabel este următoarea.

Dacă folosim SQL Server 2015 sau mai devreme, trebuie să executăm următorul grup de cod.

Dacă (OBJECT_ID ('dbo.temp') nu este nul) Plasați temperatura tabelului

Ieșirea va fi după cum urmează.

Aruncând masa

Acum, sintaxa sa este destul de confuză, așa că, dacă nu vă place și utilizați SQL Server 2016 sau mai sus, puteți alege declarația simplă DROP IF EXIST în loc de ambalaje mari.

Procedura de depozitare, dacă există:

Pentru a renunța la procedură, trebuie să scriem o declarație condițională pentru a verifica dacă procedura de stocare există sau nu, apoi să scriem declarația drop. În caz contrar, va ridica o eroare în cazul în care procedura stocată nu există.

Acum executați următoarele instrucțiuni pentru a renunța la procedura în versiuni mai mici decât SQL Server 2016.

DACĂ EXISTĂ (SELECȚIONEAZĂ 1 DIN sys.procedures WHERE Name = 'sp_temp') PROCEDURA DE DROP dbo.sp_temp

Ieșirea va fi așa.

Procedura de renunțare utilizând vechea metodă a codului if wrapper

Eliminați baza de date, dacă există:

Dacă utilizați versiuni anterioare de SQL Server, trebuie să executați următorul cod pentru a renunța la baza de date.

DACĂ DB_ID („appuals”) NU ESTE NUL BEGIN DROP DATABASE DATABASE appuals END

Ieșirea va fi după cum urmează.

Eliminați baza de date folosind o metodă veche

Metodă nouă: DROP IF EXISTS acceptat în SQL Server 2016 și versiunile de mai sus

Pentru a renunța la un obiect de bază de date în SQL Server 2016 și mai sus, trebuie să executăm o declarație simplă.

Plasați tabelul dacă există:

Putem scrie o declarație ca mai jos în SQL Server 2016 pentru a elimina un tabel stocat, dacă acesta există.

TABEL DE DROP DACĂ EXISTĂ dbo.temp

Ieșirea va fi așa.

Plasați tabelul utilizând noua metodă

Procedura de eliminare, dacă există:

Acum vom renunța la procedura stocată pe care am creat-o la începutul articolului executând următorul cod.

PROCEDURA DE DROP DACĂ EXISTĂ dbo.sp_temp

Ieșirea va fi cea de mai jos.

Plasați tabelul utilizând noua metodă

În ceea ce privește sintaxa, această afirmație simplă este ușor de înțeles și ușor de reținut. În mod similar, putem urma aceeași procedură pentru a renunța la alte obiecte din baza de date.

Eliminați baza de date, dacă există:

Executați următorul cod dacă doriți să renunțați la baza de date folosind verificarea dacă există

UTILIZAȚI BAZA DE DATE MASTER GO DROP DACĂ EXISTĂ aplicații

Ieșirea va fi cea de mai jos.

Eliminați baza de date folosind noua metodă

Avantajul utilizării acestei metode este că, dacă baza de date nu există, nu va provoca nicio eroare, următoarea instrucțiune din lot va continua să fie executată. Să încercăm să renunțăm la baza de date deja abandonată.

Eroarea apare în timp ce relansați baza de date deja abandonată.

În mod similar, putem elimina indexuri, vizualizări, secvențe, asamblări etc. din baza de date.

3 minute citite