Sådan bruges DROP, HVIS DET FINDER i SQL Server?
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 sker, vil den næste sætning i batchen fortsat blive udført. 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.
Syntaks
“DROP objekt_type [HVIS der findes] 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 er nævnt i DROP-sætningen, vil den kontrollere objektets eksistens, hvis den eksisterer, vil den falde, ellers vil den fortsætte 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".
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.
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.
Gammel metode: Før SQL Server bruger drop if exits 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.
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, og skriv derefter 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, der er 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 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.
Ny metode: DROP IF EXISTS understøttet i SQL Server 2016 og derover 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.
DROP TABEL, HVIS DET FINDES dbo.temp
Outputtet vil være sådan.
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 FINDES dbo.sp_temp
Outputtet vil være som nedenfor.
Hvad syntaks angår, 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 slippe databasen ved hjælp af hvis der findes en kontrol
BRUG MASTER GO DROP-DATABASE, HVIS DET eksisterer enkelte
Outputtet vil være som nedenfor.
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.
På samme måde kan vi slippe indekser, visninger, sekvenser, samlinger osv. Fra databasen.