Mirando algunas de las mejoras introducidas con SQL Server 2016 encontré una que es realmente muy interesante y útil. Se ha introducido en T-SQL un constructor que se ha estado solicitando hace mucho tiempo.
Generalmente cuando empezamos con un script, particularmente cuando queremos hacer una demo, lo que hacemos es chequear si los objectos existen para luego borrarlos y finalmente crearlos nuevamente
-- Casos
tipicos
IF OBJECT_ID('[dbo].[MiTabla]', 'U') IS NOT NULL
DROP TABLE [dbo].[MiTabla];
-- Otra
opción
IF EXISTS (SELECT * FROM sys.procedures WHERE
name = 'SP_DBA_MyStoreProc')
DROP PROCEDURE SP_DBA_MyStoreProc
Ahora con SQL Server 2016 podemos hacer lo siguiente
DROP TABLE IF EXISTS [dbo].[MiTabla];
DROP PROCEDURE IF EXISTS
[SP_DBA_MyStoreProc];
La parte interesante es que si el objecto no existe no mostrará ningún mensaje de error
Seguramente lo van a empezar a utilizar a la brevedad porque es un constructor muy útil
El mismo constructor esta disponible para otros objectos
- AGGREGATE
- PROCEDURE
- TABLE
- ASSEMBLY
- ROLE
- TRIGGER
- VIEW
- RULE
- DATABASE
- SCHEMA_USER
- DEFAULT
- SECURITY POLICY
- FUNCTION
- SEQUENCE
- INDEX
- TYPE
- SYNONYM
También se puede utilizar para columnas y/o contraints
ALTER TABLE [dbo].[MiTabla] DROP CONSTRAINT IF EXISTS MT_column_pk;
ALTER TABLE [dbo].[MiTabla] DROP COLUMN IF EXISTS ID;