CREATE, ALTER y DROP: administrar el ciclo de vida de un objeto

Las consultas trabajan con objetos: estructuras con nombre definidas dentro de la base, como tablas, vistas, procedimientos, funciones e índices. CREATE, ALTER y DROP representan tres momentos distintos de su ciclo de vida.

Estas instrucciones cambian el esquema, la definición estructural de la base. Deben tratarse como despliegues controlados: cambios preparados y aplicados de forma repetible, no como pruebas casuales sobre un ambiente compartido.

La idea

CREATE: agregar un objeto

CREATE define un objeto que todavía no existe. La definición cambia según se trate de una tabla, vista, procedimiento, función u otro tipo admitido.

CREATE TipoDeObjeto dbo.NombreObjeto
-- Definición;

ALTER: modificar la definición

ALTER cambia un objeto existente sin sustituir el significado de la operación por una eliminación y creación automáticas.

ALTER TipoDeObjeto dbo.NombreObjeto
-- Nueva definición;

DROP: eliminar el objeto

DROP elimina el objeto y su definición. Los datos contenidos por el objeto también pueden perderse, como ocurre al eliminar una tabla.

DROP TipoDeObjeto dbo.NombreObjeto;

La sintaxis exacta depende del tipo de objeto.

Ejemplo: crear una tabla de trabajo

CREATE TABLE dbo.ProductoEtiquetaDemo
(
    IdProducto INT NOT NULL,
    Etiqueta NVARCHAR(50) NOT NULL,
    CONSTRAINT PK_ProductoEtiquetaDemo
        PRIMARY KEY (IdProducto, Etiqueta)
);

La instrucción falla si ya existe un objeto con ese nombre. Para un script repetible podemos comprobarlo explícitamente, pero primero debemos decidir si encontrar el objeto significa conservarlo, modificarlo o detener el despliegue.

Modificar la definición

ALTER TABLE dbo.ProductoEtiquetaDemo
ADD FechaRegistro DATETIME2(0) NULL;

ALTER conserva el objeto, pero el cambio puede requerir validar datos existentes, dependencias —otros objetos o aplicaciones que lo utilizan—, espacio, bloqueos y compatibilidad con la aplicación.

Eliminar únicamente con intención explícita

DROP TABLE IF EXISTS dbo.ProductoEtiquetaDemo;

IF EXISTS evita un error cuando el objeto no está presente; no vuelve segura la eliminación. Antes de ejecutar revisamos dependencias, datos que deben conservarse y posibilidad de restauración.

CREATE OR ALTER

SQL Server admite CREATE OR ALTER para varios objetos programables, como procedimientos, vistas y funciones:

CREATE OR ALTER VIEW dbo.vw_ProductosActivos
AS
    SELECT IdProducto, Nombre, Precio
    FROM dbo.Producto
    WHERE Activo = 1;

Esta forma facilita scripts que sirven tanto para una instalación nueva como para una actualización, sin eliminar y recrear el objeto.

Qué conviene comprobar

Un cambio de esquema puede bloquear consultas, invalidar supuestos de la aplicación o fallar por dependencias. Debe probarse con una copia representativa y acompañarse de un plan de despliegue y reversión, la forma prevista de volver al estado anterior.

También confirmamos permisos, las autorizaciones concedidas a una cuenta o rol. Crear o modificar objetos requiere permisos diferentes de los necesarios para leer o actualizar datos.

Relacionado con