Инструкция DROP IF EXISTS в языке T-SQL

В этой заметке я расскажу Вам про инструкцию DROP языка T-SQL, а именно о новом параметре этой инструкции — IF EXISTS, который появился только в 2016 версии Microsoft SQL Server.

Инструкция DROP в T-SQL

DROP – это инструкция языка T-SQL, с помощью которой удаляются объекты в Microsoft SQL Server. Если Вас интересует язык T-SQL, то рекомендую почитать мою книгу «Путь программиста T-SQL», я ее разработал специально для начинающих, в ней я подробно рассказываю про все основные конструкции и операторы языка T-SQL.

DROP IF EXISTS

У инструкции DROP в Microsoft SQL Server 2016 появился дополнительный параметр IF EXISTS, который позволяет предварительно проверить существование объекта, перед его непосредственным удалением.

DROP с этим параметром значительно упрощает написание кода, так как в случае если Вам необходимо пересоздать таблицу, или просто удалить таблицу, предварительно не нужно писать различные дополнительные условные конструкции IF, чтобы проверить, существует ли эта таблица или нет. Инструкция DROP IF EXISTS сделает эту проверку сама.

Кстати, в других популярных СУБД, например, даже в бесплатной PostgresSQL, уже давно существует такая возможность, но компания Microsoft в свою СУБД добавила ее совсем недавно.

Инструкцию DROP IF EXISTS поддерживают следующие виды объектов Microsoft SQL Server (т.е. при их удалении можно использовать параметр IF EXISTS):

  • TABLE – таблица;
  • VIEW – представление;
  • PROCEDURE – хранимая процедура;
  • FUNCTION – функция;
  • SEQUENCE – последовательность;
  • TRIGGER – триггер;
  • INDEX – индекс;
  • DATABASE – база данных;
  • SCHEMA – схема;
  • ROLE — роль базы данных;
  • RULE – правила;
  • TYPE – псевдоним типа данных или определяемый пользователем тип данных;
  • AGGREGATE – определяемые пользователем агрегатные функции;
  • ASSEMBLY – сборка CLR;
  • USER – пользователь базы данных;
  • DEFAULT — объект «Значение по умолчанию»;
  • SECURITY POLICY — политика безопасности;
  • SYNONYM – синоним.

Пример DROP IF EXISTS – удаление таблицы или представления

Раньше, если перед удалением таблицы (или представления) необходимо было проверить, существует ли эта таблица, мы перед инструкцией по удалению таблицы (DROP) писали условную конструкцию IF в сочетании с функцией OBJECT_ID, код выглядел примерно следующим образом

   
   IF OBJECT_ID('dbo.TestTable', 'U') IS NOT NULL
        DROP TABLE dbo.TestTable;

   GO

Теперь условную конструкцию можно опустить, добавив вместо нее параметр IF EXISTS.

   
   DROP TABLE IF EXISTS dbo.TestTable;

Пример DROP IF EXISTS – удаление функции

Для того чтобы проверить существует ли функция перед удалением, можно перед инструкцией удаления писать следующую условную конструкцию (часто можно встретить именно такой подход).

   
   IF EXISTS (
                SELECT * FROM sys.objects 
                WHERE object_id = OBJECT_ID(N'dbo.TestFunction') 
                AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')
                )
   DROP FUNCTION dbo.TestFunction;

Теперь все гораздо проще.

   
   DROP FUNCTION IF EXISTS dbo.TestFunction;

У меня все, удачи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.