Hur använder jag DROP IF EXISTS i SQL Server?

Denna artikel diskuterar “DROP IF EXISTS” uttalande tillgängligt i SQL Server 2016 och senare versioner. “OM UTGÅNG” är den senaste valfria klausulen som lagts till i det befintliga DROP-uttalandet i SQL Server 2016 och senare versioner. I huvudsak är den “DROP IF EXISTS” alternativet används när det är nödvändigt att kontrollera om en enhet finns kvar i en databas innan den skapas eller släpps. I det här fallet släpper vi först det befintliga databasobjektet och återskapar det med ändringar om det behövs.

Således förhindrar det det gamla sättet att skriva om villkor och inuti om villkoret skriver ett uttalande för att testa objektets närvaro för att släppa det. Om det inte inträffar fortsätter nästa uttalande i batchen att köras. Men om vi försöker släppa ett objekt som inte finns kommer det att ta upp ett felmeddelande som visas nedan.

Utför följande fråga.

släpp tabell dbo.company

Resultatet blir så här.

Syntax

“DROP objekt_typ [OM EXISTS] objektnamn”

Argument

OBJECT_TYPE:

Objekttypen kan vara vem som helst från databasen, utlösaren, monteringen, sekvensen, indexet, tabellen, procedurvyn, funktionen etc.

OM FUNGERAR:

Det är en valfri klausul och om det nämns i DROP-uttalandet kommer det att kontrollera objektets existens, om det existerar kommer det att falla, annars fortsätter det att köra nästa uttalande i blocket utan att producera några fel.

Nu med introduktionen av den nya metoden "DROP IF EXISTS" i SQL Server 2016 kan utvecklare skriva kort kod.

Skapa först en databas med namnet "appuals".

Nu skapar vi en tabell som ska tappas genom att köra följande kod.

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

Produktionen blir följande.

Skapa vidare en butiksprocedur som ska tappas med följande kod.

ANVÄND [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Skapa PROCEDUR [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; VÄLJ * från dbo.temp; SLUTET

Resultatet blir som nedan.

Gammal metod: Innan SQL Server använder drop if exits på databasobjekt

Att använda DROP IF EXISTS-metoden före SQL Server 2016 krävde att du skriver en lång kod för IF-uttalanden.

Tappa tabell om det finns

Den tidigare metoden för att tappa en tabell är som följer.

Om vi ​​använder SQL Server 2015 eller tidigare än måste vi köra följande grupp kod.

Om (OBJECT_ID ('dbo.temp') inte är noll) Drop Tab temp

Produktionen blir följande.

Nu är syntaxen ganska förvirrande, så om du inte gillar det och du använder SQL Server 2016 eller högre kan du gå till ett enkelt DROP IF EXIST-uttalande istället för stora omslag.

Procedur för att släppa butik

För att avbryta proceduren måste vi skriva ett villkorligt uttalande för att kontrollera om butiksproceduren existerar eller inte och sedan skriva dropputtalandet. Annars kommer det att leda till ett fel om den lagrade proceduren inte finns.

Kör nu följande uttalanden för att släppa proceduren i versioner lägre än SQL Server 2016.

OM EXISTS (VÄLJ 1 FRÅN sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp

Resultatet blir så här.

Släpp databas om det finns:

Om du använder tidigare versioner av SQL Server måste du köra följande kod för att släppa databasen.

OM DB_ID ('appuals') INTE är NULL BEGIN DROP DATABASE appuals SLUT

Produktionen blir följande.

Ny metod: DROP IF EXISTS stöds i SQL Server 2016 och senare version

För att släppa ett databasobjekt i SQL Server 2016 och senare måste vi utföra ett enkelt uttalande.

Släpp tabell om det finns:

Vi kan skriva ett uttalande enligt nedan i SQL Server 2016 för att ta bort en lagrad tabell om den finns.

DROP TABELL OM DET FINNER dbo.temp

Resultatet blir så här.

Tappförfarande om det finns:

Nu släpper vi den lagrade proceduren som vi skapade i början av artikeln genom att köra följande kod.

DROPFÖRFARANDE OM DET FINNER dbo.sp_temp

Resultatet blir som nedan.

När det gäller syntax är detta enkla uttalande lätt att förstå och lätt att komma ihåg. På samma sätt kan vi följa samma procedur för att släppa andra databasobjekt.

Släpp databas om det finns:

Kör följande kod om du vill släppa databasen genom att använda om det finns

ANVÄND MASTER GO DROP-DATABAS OM DET FINNER enskilda

Resultatet blir som nedan.

Fördelen med att använda den här metoden är att om databasen inte finns kommer den inte att orsaka något fel, nästa uttalande i batchen kommer att fortsätta att köras. Låt oss försöka släppa den redan tappade databasen.

På samma sätt kan vi släppa index, vyer, sekvenser, sammansättningar etc. från databasen.

Facebook Twitter Google Plus Pinterest