ALTER VIEW

ALTER VIEW modifica la definición de una vista existente. Es equivalente a eliminar la vista y volver a crearla, pero preserva los permisos asignados. También puedes usar CREATE OR REPLACE VIEW, que crea la vista si no existe o la reemplaza si ya existe.

Sintaxis

-- ALTER VIEW
ALTER VIEW nombre_vista AS
SELECT nuevas_columnas
FROM tabla
WHERE nueva_condicion;
 
-- CREATE OR REPLACE VIEW (alternativa más común)
CREATE OR REPLACE VIEW nombre_vista AS
SELECT nuevas_columnas
FROM tabla
WHERE nueva_condicion;

Ejemplo con ALTER VIEW

-- Crear vista original
CREATE VIEW v_productos_caros AS
SELECT nombre, precio
FROM productos
WHERE precio > 500;
 
SELECT * FROM v_productos_caros;
nombreprecio
iPhone 15 Pro1299.99
Samsung Galaxy S24899.99
Google Pixel 8699.00
Xiaomi 14599.99
MacBook Air M31399.00
Lenovo ThinkPad X11549.00
ASUS ROG Zephyrus1899.99
Sofá 3 plazas599.00
-- Modificar: añadir stock y subir el umbral
ALTER VIEW v_productos_caros AS
SELECT nombre, precio, stock
FROM productos
WHERE precio > 1000;
 
SELECT * FROM v_productos_caros;
nombrepreciostock
iPhone 15 Pro1299.9945
MacBook Air M31399.0025
Lenovo ThinkPad X11549.0018
ASUS ROG Zephyrus1899.9912

CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW es la forma más utilizada porque funciona tanto para crear como para modificar:

-- Si la vista no existe, la crea
-- Si ya existe, la reemplaza
CREATE OR REPLACE VIEW v_productos_caros AS
SELECT nombre, precio, stock,
    CASE
        WHEN stock > 50 THEN 'Alto'
        WHEN stock > 20 THEN 'Medio'
        ELSE 'Bajo'
    END AS nivel_stock
FROM productos
WHERE precio > 1000;
 
SELECT * FROM v_productos_caros;
nombrepreciostocknivel_stock
iPhone 15 Pro1299.9945Medio
MacBook Air M31399.0025Medio
Lenovo ThinkPad X11549.0018Bajo
ASUS ROG Zephyrus1899.9912Bajo

ALTER VIEW vs CREATE OR REPLACE

CaracterísticaALTER VIEWCREATE OR REPLACE VIEW
Vista debe existirSí, error si no existeNo, la crea si no existe
Preserva permisos
Uso en scriptsMenos flexibleMás flexible, ideal para scripts

CREATE OR REPLACE VIEW es la opción recomendada porque es idempotente: puedes ejecutarla múltiples veces sin error.

Cambiar opciones de la vista

-- Añadir WITH CHECK OPTION a una vista existente
CREATE OR REPLACE VIEW v_productos_caros AS
SELECT id, nombre, precio, stock
FROM productos
WHERE precio > 1000
WITH CHECK OPTION;
 
-- Cambiar el algoritmo
CREATE OR REPLACE ALGORITHM = MERGE VIEW v_productos_caros AS
SELECT id, nombre, precio, stock
FROM productos
WHERE precio > 1000;

Ver la definición actual

Antes de modificar una vista, puedes ver su definición actual:

SHOW CREATE VIEW v_productos_caros\G

Limpieza

DROP VIEW IF EXISTS v_productos_caros;

En el siguiente artículo veremos cómo renombrar una vista con RENAME TABLE.

Escrito por Eduardo Lázaro