Инструкция CREATE OR ALTER в языке T-SQL – описание и примеры

Начиная c 2016 версии Microsoft SQL Server в языке T-SQL появилась новая инструкция CREATE OR ALTER, которая позволяет создать объект базы данных, если он не существует, или изменить его, если он существует.

CREATE OR ALTER в языке T-SQL

Данная возможность в других СУБД (Oracle, PostgreSQL) существует уже достаточно давно, однако в Microsoft SQL Server она появилась, как я уже отметил, только в 2016 версии (SP1), ранее приходилось проверять, существует ли объект или нет, и на основе этого уже принимать решение о его первичном создании (CREATE) или изменении существующего (ALTER). Сейчас стало все гораздо проще, ведь все это объединено в одну инструкцию CREATE OR ALTER.

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

CREATE OR ALTER в языке T-SQL

CREATE OR ALTER – это инструкция языка T-SQL, при которой происходит создание объекта базы данных, если он не существует, или его изменение, если он уже существует.

Параметр OR ALTER как раз и отвечает за изменение объекта, если он уже был создан ранее.

Принцип работы данной инструкции прост, если объекта еще нет, то выполняется обычный оператор CREATE, и его действие ничем не отличается от стандартной инструкции CREATE, а если объект есть, то выполняется обычный оператор ALTER, и он действует точно так же, как обычная инструкция ALTER.

Параметр OR ALTER доступен при создании следующих объектов:

Пример инструкции CREATE OR ALTER в T-SQL

В качестве примера давайте напишем SQL инструкцию, которая будет создавать или изменять представление (view) в зависимости от того, существует ли объект или нет.

Исходные данные для примера

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

   
   --Создание таблицы Goods
   CREATE TABLE Goods (
     ProductId    INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_ProductId PRIMARY KEY,
     Category     INT NOT NULL,
     ProductName  VARCHAR(100) NOT NULL,
     Price        MONEY NULL,
   );

   GO

   --Добавление строк в таблицу Goods
   INSERT INTO Goods(Category, ProductName, Price)
     VALUES (1, 'Системный блок', 300),
            (1, 'Монитор', 200),
            (2, 'Смартфон', 100);
   GO

   --Выборка данных
   SELECT * FROM Goods;

Скриншот 1

CREATE OR ALTER VIEW – пример с созданием представления

На текущий момент представления у нас нет, поэтому сначала у нас представление будет создано.

   
   CREATE OR ALTER VIEW AllGoods
   AS
      SELECT * FROM Goods;
   GO
   SELECT * FROM AllGoods;

Скриншот 2

Теперь мы внесем небольшие изменения в это представление (вывод только некоторых столбцов), и запустим такую же инструкцию CREATE OR ALTER VIEW.

   
   CREATE OR ALTER VIEW AllGoods
   AS
      SELECT ProductId, ProductName, Price
      FROM Goods;
   GO
   SELECT * FROM AllGoods;

Скриншот 3

Мы видим, что инструкция выполнилась также успешно, а представление изменилось.

Инструкция CREATE OR ALTER работает точно так же и с другими объектами, т.е. достаточно после оператора CREATE указать параметр OR ALTER, и тогда объект будет создаваться или изменяться, в зависимости от существования объекта.

Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 1
  1. Админ (автор)

    Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
    На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
    На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.

Добавить комментарий

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