by Alexey Knyazev
5. ноября 2015 02:52
С выходом SQL Server 2016 CTP3 нас ожидает приятное дополнение в синтаксисе.
Изменения касаются DDL операций DROP и ALTER TABLE.
Теперь любую операцию по удалению объекта (таблицы, процедуры, функции, триггеры, индексы и т.д.), или столбца таблицы можно выполнить проще с помощью инструкции DROP IF EXISTS.
Для проверки существования объекта, перед его созданием использовался скрипт на подобии того, что ниже:
--1)
if object_id ( N'dbo.TestTable', N'U' ) is not null
drop table dbo.TestTable;
go
create table dbo.TestTable ( id int identity );
go
--2)
if exists ( select * from sys.tables t
inner join sys.schemas s
on t.schema_id = s.schema_id
where t.name = N'TestTable'
and s.name = N'dbo'
)
drop table dbo.TestTable;
go
create table dbo.TestTable ( id int identity );
go
Теперь есть ещё один способ (только начиная с CTP3 SQL Server 2016):
--3)
drop table if exists dbo.TestTable;
go
create table dbo.TestTable ( id int identity );
go
Синтаксис поддерживается для следующих объектов:
Кроме объектов, подобную конструкцию можно использовать и при удалении столбцов и ограничений: