ALTER VIEW

ALTER VIEW — cambiar la definición de una vista

Synopsis

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )

Descripción

ALTER VIEW cambia varias propiedades auxiliares de una vista. (Si deseas modificar la consulta que define la vista, usa CREATE OR REPLACE VIEW).

Debes ser el propietario de la vista para usar ALTER VIEW. Para cambiar el esquema de una vista, también debes tener el privilegio CREATE en el nuevo esquema. Para cambiar el propietario, debes ser capaz de hacer SET ROLE al nuevo rol propietario, y ese rol debe tener el privilegio CREATE en el esquema de la vista. (Estas restricciones garantizan que cambiar el propietario no permita hacer nada que no pudieras hacer eliminando y volviendo a crear la vista. Sin embargo, un superusuario puede cambiar la propiedad de cualquier vista de todos modos).

Parámetros

name

El nombre (opcionalmente calificado por esquema) de una vista existente.

column_name

El nombre de una columna existente.

new_column_name

El nuevo nombre para una columna existente.

IF EXISTS

No arrojar un error si la vista no existe. En este caso se emite un aviso (notice) en su lugar.

SET/DROP DEFAULT

Estas formas establecen o eliminan el valor predeterminado para una columna. El valor predeterminado de una columna de la vista se sustituye en cualquier comando INSERT o UPDATE cuyo objetivo sea la vista, antes de aplicar cualquier regla o disparador (trigger) para la vista. El valor predeterminado de la vista tendrá por lo tanto prioridad sobre cualquier valor predeterminado de las relaciones subyacentes.

new_owner

El nombre de usuario del nuevo propietario de la vista.

new_name

El nuevo nombre para la vista.

new_schema

El nuevo esquema para la vista.

SET ( view_option_name [= view_option_value] [, ... ] )
RESET ( view_option_name [, ... ] )

Establece o restablece una opción de la vista. Las opciones admitidas actualmente son:

check_option (enum)

Cambia la opción de verificación (check option) de la vista. El valor debe ser local o cascaded.

security_barrier (boolean)

Cambia la propiedad de barrera de seguridad (security-barrier) de la vista. El valor debe ser un valor booleano, como true o false.

security_invoker (boolean)

Cambia la propiedad del invocador de seguridad (security-invoker) de la vista. El valor debe ser un valor booleano, como true o false.

Notas

Por razones históricas, ALTER TABLE también se puede usar con vistas; pero las únicas variantes de ALTER TABLE que se permiten con vistas son equivalentes a las mostradas anteriormente.

Ejemplos

Para renombrar la vista foo a bar:

ALTER VIEW foo RENAME TO bar;

Para asociar un valor de columna predeterminado a una vista actualizable:

CREATE TABLE base_table (id int, ts timestamptz);
CREATE VIEW a_view AS SELECT * FROM base_table;
ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();
INSERT INTO base_table(id) VALUES(1);  -- ts recibirá un NULL
INSERT INTO a_view(id) VALUES(2);  -- ts recibirá la hora actual

Compatibilidad

ALTER VIEW es una extensión de PostgreSQL del estándar SQL.

Véase también

CREATE VIEW, DROP VIEW