Содержание:
- Синтаксис
- Аргументы
- Старый метод: До SQL Server использовал drop if exits для объектов базы данных
- Убрать таблицу, если она существует
- Удаление хранимой процедуры, если она существует:
- Удалите базу данных, если она существует:
- Новый метод: DROP IF EXISTS, поддерживаемый в SQL Server 2016 и выше
- Уничтожить таблицу, если она существует:
- Удалите процедуру, если она существует:
- Удалить базу данных, если она существует:
В этой статье рассматривается “DROP IF EXISTS” заявление, доступное в SQL Server 2016 и более поздних версиях. “IF EXITS” это последний необязательный пункт, добавленный в существующий оператор DROP в SQL Server 2016 и более поздних версиях. По сути, команда “DROP IF EXISTS” опция используется, когда необходимо проверить, остается ли сущность в базе данных, прежде чем она будет создана или удалена. В данном случае мы сначала удалим существующий объект базы данных, а затем воссоздадим его с изменениями, если потребуется.
Таким образом, это предотвращает старый способ написания условия if и внутри условия if написания оператора для проверки наличия объекта, чтобы отбросить его. Если этого не происходит, то следующий оператор в пакете продолжает выполняться. Но если мы попытаемся бросить несуществующий объект, то будет выдано сообщение об ошибке, как показано ниже.
Выполните следующий запрос.
отбросить таблицу dbo.компания
Вывод будет выглядеть следующим образом.
Синтаксис
"DROP object_type [ IF EXISTS ] object_name"
Аргументы
OBJECT_TYPE:
Тип объекта может быть любым из базы данных, триггера, сборки, последовательности, индекса, таблицы, представления процедуры, функции и т. д.
IF EXISTS:
Это необязательный пункт, и если он упоминается в операторе DROP, то проверяется существование объекта, если он существует, то он будет удален, в противном случае он продолжит выполнение следующего оператора в блоке, не выдавая никаких ошибок.
Теперь с введением нового метода «DROP IF EXISTS» в SQL Server 2016 разработчики могут писать короткий код.
Сначала создайте базу данных с именем “appuals».
Теперь мы создадим таблицу, которая будет удалена, выполнив следующий код.
use [appuals] Перейти CREATE TABLE temp ( id INT, имя varchar(100) ); GO
Выходные данные будут выглядеть следующим образом.
Далее, создайте хранимую процедуру, которую нужно удалить, используя следующий код.
USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create PROCEDURE [dbo].[sp_temp] AS BEGIN УСТАНОВИТЬ NOCOUNT ON; SELECT * from dbo.temp; END
Результат будет выглядеть следующим образом.
Старый метод: До SQL Server использовал drop if exits для объектов базы данных
Использование метода DROP IF EXISTS до SQL Server 2016 требовало написания длинного кода-обертки оператора IF.
Убрать таблицу, если она существует
Предыдущий метод удаления таблицы выглядит следующим образом.
Если мы используем SQL Server 2015 или более ранние версии, то нам нужно выполнить следующий набор кода.
If(OBJECT_ID('dbo.temp') Is Not Null) Удалить таблицу temp
Вывод будет выглядеть следующим образом.
Теперь его синтаксис довольно запутанный, поэтому если вам он не нравится и вы используете SQL Server 2016 или выше, вы можете использовать простой оператор DROP IF EXIST вместо больших оберток.
Удаление хранимой процедуры, если она существует:
Чтобы удалить процедуру, мы должны написать условный оператор, чтобы проверить, существует ли хранимая процедура или нет, а затем написать оператор drop. В противном случае будет выдана ошибка, если хранимая процедура не существует.
Теперь выполните следующие операторы для удаления процедуры в версиях ниже SQL Server 2016.
IF EXISTS(SELECT 1 FROM sys.процедуры WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp
Вывод будет выглядеть следующим образом.
Удалите базу данных, если она существует:
Если вы используете предыдущие версии SQL Server, вам необходимо выполнить следующий код для удаления базы данных.
IF DB_ID('appuals') IS NOT NULL BEGIN DROP DATABASE appuals END
Вывод будет выглядеть следующим образом.
Новый метод: DROP IF EXISTS, поддерживаемый в SQL Server 2016 и выше
Чтобы сбросить объект базы данных в SQL Server 2016 и выше, нам нужно выполнить простой оператор.
Уничтожить таблицу, если она существует:
В SQL Server 2016 мы можем написать следующее утверждение, чтобы удалить хранимую таблицу, если она существует.
DROP TABLE IF EXISTS dbo.temp
Результат будет выглядеть следующим образом.
Удалите процедуру, если она существует:
Теперь мы удалим хранимую процедуру, которую мы создали в начале статьи, выполнив следующий код.
DROP PROCEDURE IF EXISTS dbo.sp_temp
Вывод будет выглядеть следующим образом.
Что касается синтаксиса, то этот простой оператор легко понять и легко запомнить. Аналогично, мы можем выполнить ту же процедуру для удаления других объектов базы данных.
Удалить базу данных, если она существует:
Выполните следующий код, если вы хотите сбросить базу данных с помощью проверки if exists
USE MASTER GO DROP DATABASE IF EXISTS appuals
Вывод будет выглядеть следующим образом.
Преимущество использования этого метода заключается в том, что если база данных не существует, это не вызовет никакой ошибки, следующий оператор в пакете продолжит выполняться. Давайте’попробуем повторно закинуть уже закинутую базу данных.
Аналогично мы можем отбрасывать индексы, представления, последовательности, сборки и т.д. из базы данных.