In Sql Server 2016, SE ESISTE è la nuova clausola opzionale introdotta nell’istruzione DROP esistente. Fondamentalmente, controlla l’esistenza dell’oggetto, se l’oggetto esiste lo rilascia e se non esiste continuerà a eseguire l’istruzione successiva nel batch. Fondamentalmente evita di scrivere if condition e all’interno di if condition scrivendo una dichiarazione per verificare l’esistenza dell’oggetto.,
Sintassi:
DROP OBJECT_TYPE OBJECT_NAME
DOVE: OBJECT_TYPE come Tabella, Procedura, Vista, Funzione, Database, Trigger, Assembly, Sequenza, Indice ecc.
SE ESISTE: è una clausola facoltativa e se è menzionata nell’istruzione DROP, controlla l’esistenza dell’oggetto, se esiste, altrimenti continuerà a eseguire l’istruzione successiva nel blocco senza sollevare problemi.
Cerchiamo di capire questa nuova clausola IF EXISTS nell’istruzione DROP con un ampio elenco di esempi., Per dimostrare questa clausola creiamo prima un database di esempio con una tabella e una Stored Procedure.
CREATE DATABASE SqlHintsDemoDBGOUSE SqlHintsDemoDBGOCREATE TABLE dbo.Customers (Id INT, Name Nvarchar(50))GOCREATE PROCEDURE dbo.WelcomeMessageASSELECT 'Welcome to Sql Server'GO
RILASCIA Stored Procedure SE ESISTE
Come verificare se esiste una Stored Procedure
In Sql Server 2016 possiamo scrivere un’istruzione come di seguito per eliminare una Stored Procedure se esiste.
DROP PROCEDURE IF EXISTS dbo.WelcomeMessage
Se la stored procedure non esiste non sollevare qualsiasi errore, è continuare a eseguire l’istruzione successiva nel batch., Proviamo a rilasciare nuovamente la stored procedure WelcomeMessage che è già stata eliminata.
Dal risultato è chiaro che non genererà alcun errore se la stored procedure non esiste, continuerà a eseguire l’istruzione successiva nel batch.
Nelle versioni precedenti di Sql Server usiamo l’istruzione come di seguito per eliminare la stored procedure se esiste.,
IF EXISTS(SELECT 1 FROM sys.procedures WHERE Name = 'WelcomeMessage')BEGIN DROP PROCEDURE dbo.WelcomeMessageEND
È possibile consultare l’articolo Come verificare se esiste una Stored Procedure per visualizzare varie opzioni nelle versioni precedenti di Sql Server per verificare l’esistenza di una Stored Procedure.
DROP TABLE IF EXISTS
Come verificare se esiste una tabella
In Sql Server 2016 possiamo scrivere una dichiarazione come di seguito per eliminare una tabella se esiste.,
DROP TABLE IF EXISTS dbo.Customers
Se la tabella non esiste non sollevare qualsiasi errore, è continuare a eseguire l’istruzione successiva nel batch. Proviamo a ri-cadere il tavolo dbo.Clienti che è già caduto.
Dal risultato è chiaro che non genererà alcun errore se la Tabella non esiste, continuerà a eseguire l’istruzione successiva nel batch.,
Nelle versioni precedenti di Sql Server usiamo l’istruzione come di seguito per eliminare la tabella se esiste.
IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U')BEGIN DROP TABLE dbo.CustomersEND
Puoi consultare l’articolo Come verificare se esiste una tabella per vedere varie opzioni nelle versioni precedenti di Sql Server per verificare l’esistenza di una tabella.
DROP DataBase IF EXISTS
Come verificare se esiste un database
In Sql Server 2016 possiamo scrivere una dichiarazione come di seguito per eliminare un database se esiste.,
USE MASTERGODROP DATABASE IF EXISTS SqlHintsDemoDB
Se il Database non esiste non sollevare qualsiasi errore, è continuare a eseguire l’istruzione successiva nel batch. Proviamo a rilasciare nuovamente il database SqlHintsDemoDB che è già stato eliminato.
Dal risultato è chiaro che, non genererà alcun errore se il Database non esiste, continuerà a eseguire l’istruzione successiva nel batch.,
Nelle versioni precedenti di Sql Server usiamo l’istruzione come di seguito per eliminare il database se esiste.
IF DB_ID('SqlHintsDemoDB') IS NOT NULLBEGIN DROP DATABASE SqlHintsDemoDBEND
Puoi consultare l’articolo Come verificare se esiste un database per vedere varie opzioni nelle versioni precedenti di Sql Server per verificare l’esistenza di un database.,ISJSON Funzione in Sql Server 2016