Sådan bruges DROP, HVIS DET FINDER i SQL Server?



Prøv Vores Instrument Til At Fjerne Problemer

Denne artikel diskuterer “DROP IF EXISTS” erklæring tilgængelig i SQL Server 2016 og senere versioner. “HVIS UDGANG” er den seneste valgfri klausul tilføjet i den eksisterende DROP-sætning i SQL Server 2016 og senere versioner. I det væsentlige er den “DROP IF EXISTS” indstillingen bruges, når det er nødvendigt at kontrollere, om en enhed forbliver i en database, før den oprettes eller droppes. I dette tilfælde vil vi først slippe det eksisterende databaseobjekt og derefter genskabe det med ændringer, hvis det er nødvendigt.



Således forhindrer det den gamle måde at skrive på, hvis tilstand og inde i hvis betingelse, der skriver en erklæring for at teste objektets tilstedeværelse for at droppe det. Hvis det ikke forekommer, fortsættes den næste sætning i batchen. Men hvis vi forsøger at droppe et objekt, der ikke findes, rejser det en fejlmeddelelse som vist nedenfor.



Udfør følgende forespørgsel.



drop tabel dbo.company

Outputtet vil være sådan.

Fejlen opstår, når databaseobjektet, der ikke findes, slippes

Syntaks

“DROP-objekt_type [HVIS EKSISTERER] objektnavn”

Argumenter

OBJECT_TYPE:



Objekttypen kan være enhver fra databasen, trigger, samling, sekvens, indeks, tabel, procedurevisning, funktion osv.

HVIS EKSISTERER:

Det er en valgfri klausul, og hvis den nævnes i DROP-udsagnet, vil den kontrollere objektets eksistens, hvis den eksisterer, vil den falde, ellers fortsætter den med at udføre den næste sætning i blokken uden at producere nogen fejl.

Nu med introduktionen af ​​den nye metode “DROP IF EXISTS” i SQL Server 2016 kan udviklere skrive kort kode.

Opret først en database med navnet 'appuals'.

Oprettelse af en database

Nu opretter vi en tabel, der skal droppes ved at udføre følgende kode.

brug [appuals] Go CREATE TABLE temp (id INT, name varchar (100)); GÅ

Outputtet vil være som følger.

Oprettelse af bord

Opret desuden en butiksprocedure, der skal droppes ved hjælp af følgende kode.

BRUG [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Opret PROCEDURE [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; VÆLG * fra dbo.temp; ENDE

Outputtet vil være som nedenfor.

Oprettelse af butiksprocedure

Gammel metode: Før SQL Server bruger drop, hvis der afslutter på databaseobjekter

Brug af DROP IF EXISTS-metoden før SQL Server 2016 krævede skrivning af langvarig IF-sætningsindpakningskode.

Drop tabel, hvis der findes

Den tidligere metode til at tabe en tabel er som følger.

Hvis vi bruger SQL Server 2015 eller tidligere, skal vi udføre følgende flok kode.

Hvis (OBJECT_ID ('dbo.temp') ikke er nul) Drop Table temp

Outputtet vil være som følger.

At tabe bordet

Nu er syntaksen ret forvirrende, så hvis du ikke kan lide det, og du bruger SQL Server 2016 eller derover, kan du gå til en simpel DROP IF EXIST-sætning i stedet for store indpakninger.

Drop store-procedure, hvis der findes:

For at droppe proceduren er vi nødt til at skrive en betinget erklæring for at kontrollere, om butiksproceduren findes eller ikke, så skriv drop-erklæringen. Ellers vil det medføre en fejl, hvis den gemte procedure ikke findes.

Udfør nu følgende udsagn for at slippe proceduren i versioner lavere end SQL Server 2016.

HVIS EKSISTERER (VÆLG 1 FRA sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp

Outputtet vil være sådan.

Slip proceduren ved at bruge den gamle metode til if wrapper-kode

Slip database, hvis der findes:

Hvis du bruger tidligere versioner af SQL Server, skal du udføre følgende kode for at droppe databasen.

HVIS DB_ID ('appuals') IKKE er NULL BEGIN DROP DATABASE appuals END

Outputtet vil være som følger.

Slip databasen ved hjælp af en gammel metode

Ny metode: DROP IF EXISTS understøttet i SQL Server 2016 og nyere version

For at droppe et databaseobjekt i SQL Server 2016 og derover skal vi udføre en simpel erklæring.

Drop tabel, hvis der findes:

Vi kan skrive en erklæring som nedenfor i SQL Server 2016 for at fjerne en gemt tabel, hvis den findes.

DROPTABEL, HVIS DET findes dbo.temp

Outputtet vil være sådan.

Drop tabel ved hjælp af den nye metode

Drop procedure, hvis der findes:

Nu vil vi slippe den lagrede procedure, vi oprettede i starten af ​​artiklen ved at udføre følgende kode.

DROP-PROCEDURE, HVIS DET FINDER dbo.sp_temp

Outputtet vil være som nedenfor.

Drop tabel ved hjælp af den nye metode

For så vidt angår syntaks, er denne enkle erklæring let at forstå og let at huske. På samme måde kan vi følge den samme procedure for at droppe andre databaseobjekter.

Slip database, hvis der findes:

Udfør følgende kode, hvis du vil droppe databasen ved hjælp af check hvis der findes

BRUG MASTER GO DROP-DATABASE, HVIS DET eksisterer enkelte

Outputtet vil være som nedenfor.

Slip databasen ved hjælp af den nye metode

Fordelen ved at bruge denne metode er, at hvis databasen ikke eksisterer, forårsager den ikke nogen fejl, vil den næste sætning i batchen fortsat blive udført. Lad os prøve at slippe den allerede tabte database igen.

Fejlen opstår, når den allerede tabte database slettes igen.

På samme måde kan vi slippe indekser, visninger, sekvenser, samlinger osv. Fra databasen.

3 minutter læst