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;| nombre | precio |
|---|---|
| iPhone 15 Pro | 1299.99 |
| Samsung Galaxy S24 | 899.99 |
| Google Pixel 8 | 699.00 |
| Xiaomi 14 | 599.99 |
| MacBook Air M3 | 1399.00 |
| Lenovo ThinkPad X1 | 1549.00 |
| ASUS ROG Zephyrus | 1899.99 |
| Sofá 3 plazas | 599.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;| nombre | precio | stock |
|---|---|---|
| iPhone 15 Pro | 1299.99 | 45 |
| MacBook Air M3 | 1399.00 | 25 |
| Lenovo ThinkPad X1 | 1549.00 | 18 |
| ASUS ROG Zephyrus | 1899.99 | 12 |
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;| nombre | precio | stock | nivel_stock |
|---|---|---|---|
| iPhone 15 Pro | 1299.99 | 45 | Medio |
| MacBook Air M3 | 1399.00 | 25 | Medio |
| Lenovo ThinkPad X1 | 1549.00 | 18 | Bajo |
| ASUS ROG Zephyrus | 1899.99 | 12 | Bajo |
ALTER VIEW vs CREATE OR REPLACE
| Característica | ALTER VIEW | CREATE OR REPLACE VIEW |
|---|---|---|
| Vista debe existir | Sí, error si no existe | No, la crea si no existe |
| Preserva permisos | Sí | Sí |
| Uso en scripts | Menos flexible | Má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\GLimpieza
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
