Начиная c 2016 версии Microsoft SQL Server в языке T-SQL появилась новая инструкция CREATE OR ALTER, которая позволяет создать объект базы данных, если он не существует, или изменить его, если он существует.
Данная возможность в других СУБД (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;
CREATE OR ALTER VIEW – пример с созданием представления
На текущий момент представления у нас нет, поэтому сначала у нас представление будет создано.
CREATE OR ALTER VIEW AllGoods AS SELECT * FROM Goods; GO SELECT * FROM AllGoods;
Теперь мы внесем небольшие изменения в это представление (вывод только некоторых столбцов), и запустим такую же инструкцию CREATE OR ALTER VIEW.
CREATE OR ALTER VIEW AllGoods AS SELECT ProductId, ProductName, Price FROM Goods; GO SELECT * FROM AllGoods;
Мы видим, что инструкция выполнилась также успешно, а представление изменилось.
Инструкция CREATE OR ALTER работает точно так же и с другими объектами, т.е. достаточно после оператора CREATE указать параметр OR ALTER, и тогда объект будет создаваться или изменяться, в зависимости от существования объекта.
Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.
На сегодня это все, надеюсь, материал был Вам полезен, пока!
Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.