Как использовать DROP IF EXISTS в SQL Server?



Попробуйте наш инструмент устранения неполадок

В этой статье обсуждается «УДАЛИТЬ, ЕСЛИ СУЩЕСТВУЕТ» инструкция, доступная в SQL Server 2016 и более поздних версиях. «ЕСЛИ ВЫХОДИТ» - это последнее необязательное предложение, добавленное в существующий оператор DROP в SQL Server 2016 и более поздних версиях. По сути, «УДАЛИТЬ, ЕСЛИ СУЩЕСТВУЕТ» Параметр используется, когда необходимо проверить, остается ли объект в базе данных, прежде чем он будет создан или удален. В этом случае мы сначала удалим существующий объект базы данных, а затем воссоздадим его с изменениями, если это необходимо.



Таким образом, он предотвращает старый способ записи условия if и внутри условия if запись оператора для проверки наличия объекта для его удаления. Если этого не происходит, следующий оператор в пакете будет продолжать выполняться. Но если мы попытаемся отбросить несуществующий объект, появится сообщение об ошибке, как показано ниже.



Выполните следующий запрос.



drop table dbo.company

Результат будет таким.

Ошибка возникает при удалении несуществующего объекта базы данных

Синтаксис

«DROP object_type [IF EXISTS] object_name»

Аргументы

OBJECT_TYPE:



Тип объекта может быть любым из базы данных, триггера, сборки, последовательности, индекса, таблицы, представления процедуры, функции и т. Д.

ЕСЛИ СУЩЕСТВУЕТ:

Это необязательное предложение, и если оно упоминается в операторе DROP, оно проверит существование объекта, если он существует, он будет удален, в противном случае он продолжит выполнение следующего оператора в блоке без каких-либо ошибок.

Теперь, когда в SQL Server 2016 появился новый метод «DROP IF EXISTS», разработчики могут писать краткий код.

Сначала создайте базу данных с именем «appuals».

Создание базы данных

Теперь мы создадим таблицу для удаления, выполнив следующий код.

использовать [приложение] Перейти СОЗДАТЬ ТАБЛИЦУ temp (id INT, name varchar (100)); ИДТИ

Результат будет следующим.

Создание таблицы

Далее создайте процедуру сохранения, которую нужно удалить, используя следующий код.

ИСПОЛЬЗУЙТЕ [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Создать ПРОЦЕДУРУ [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; ВЫБРАТЬ * из dbo.temp; КОНЕЦ

Результат будет таким, как показано ниже.

Создание процедуры магазина

Старый метод: до использования SQL Server при выходе из объектов базы данных

Использование метода DROP IF EXISTS до SQL Server 2016 требовало написания длинного кода оболочки оператора IF.

Удалить таблицу, если существует

Предыдущий метод удаления таблицы следующий.

Если мы используем SQL Server 2015 или более раннюю версию, нам нужно выполнить следующий набор кода.

Если (OBJECT_ID ('dbo.temp') не равно Null) Удалить временную таблицу

Результат будет следующим.

Бросая стол

Его синтаксис довольно запутанный, поэтому, если он вам не нравится и вы используете SQL Server 2016 или более поздней версии, вы можете использовать простой оператор DROP IF EXIST вместо больших оболочек.

Процедура сброса хранилища, если существует:

Чтобы отбросить процедуру, мы должны написать условный оператор, чтобы проверить, существует ли процедура сохранения или нет, а затем написать оператор drop. В противном случае это вызовет ошибку, если хранимая процедура не существует.

Теперь выполните следующие инструкции, чтобы удалить процедуру в версиях ниже, чем SQL Server 2016.

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ sys.procedures WHERE Name = 'sp_temp') ПРОЦЕДУРА УДАЛЕНИЯ dbo.sp_temp

Результат будет таким.

Процедура отбрасывания с использованием старого метода кода оболочки if

Удалить базу данных, если существует:

Если вы используете предыдущие версии SQL Server, вам необходимо выполнить следующий код, чтобы удалить базу данных.

ЕСЛИ DB_ID ('appuals') НЕ НУЛЕНО НАЧАТЬ DROP DATABASE appuals END

Результат будет следующим.

Отбросьте базу данных старым методом

Новый метод: DROP IF EXISTS поддерживается в SQL Server 2016 и более поздних версиях.

Чтобы удалить объект базы данных в SQL Server 2016 и выше, нам нужно выполнить простую инструкцию.

Удалить таблицу, если существует:

Мы можем написать инструкцию, как показано ниже, в SQL Server 2016, чтобы удалить сохраненную таблицу, если она существует.

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ dbo.temp

Результат будет таким.

Удалить таблицу с помощью нового метода

Процедура сброса, если существует:

Теперь мы отбросим хранимую процедуру, которую мы создали в начале статьи, выполнив следующий код.

ПРОЦЕДУРА УДАЛЕНИЯ, ЕСЛИ СУЩЕСТВУЕТ dbo.sp_temp

Результат будет таким, как показано ниже.

Удалить таблицу с помощью нового метода

Что касается синтаксиса, это простое утверждение легко понять и легко запомнить. Точно так же мы можем выполнить ту же процедуру для удаления других объектов базы данных.

Удалить базу данных, если существует:

Выполните следующий код, если вы хотите удалить базу данных с помощью проверки наличия

ИСПОЛЬЗУЙТЕ MASTER GO DROP DATABASE, ЕСЛИ СУЩЕСТВУЕТ приложения

Результат будет таким, как показано ниже.

Отбросьте базу данных с помощью нового метода

Преимущество использования этого метода заключается в том, что, если база данных не существует, это не вызовет никаких ошибок, и следующая инструкция в пакете будет продолжать выполняться. Попробуем повторно сбросить уже сброшенную базу данных.

Ошибка возникает при повторном удалении уже удаленной базы данных.

Точно так же мы можем удалить индексы, представления, последовательности, сборки и т. Д. Из базы данных.

3 минуты на чтение