ALTER VIEW

ALTER VIEW — modifica a definição de uma visão

Sinopse

ALTER VIEW [ IF EXISTS ] nome​
    ALTER [ COLUMN ] nome_da_coluna​
    SET DEFAULT expressão
ALTER VIEW [ IF EXISTS ] nome​
    ALTER [ COLUMN ] nome_da_coluna DROP DEFAULT
ALTER VIEW [ IF EXISTS ] nome​
    OWNER TO {
        novo_dono
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    }
ALTER VIEW [ IF EXISTS ] nome​
    RENAME [ COLUMN ] nome_da_coluna TO novo_nome_da_coluna
ALTER VIEW [ IF EXISTS ] nome​
    RENAME TO novo_nome
ALTER VIEW [ IF EXISTS ] nome​
    SET SCHEMA novo_esquema
ALTER VIEW [ IF EXISTS ] nome​
    SET ( nome_da_opção_da_visão [= valor_da_opção_da_visão] [, ... ] )
ALTER VIEW [ IF EXISTS ] nome​
    RESET ( nome_da_opção_da_visão [, ... ] )

Descrição

O comando ALTER VIEW altera várias propriedades auxiliares de uma visão. (Se for desejado alterar a consulta de definição da visão, deve ser usado o comando CREATE OR REPLACE VIEW.)

É necessário ser o dono da visão para poder executar o comando ALTER VIEW. Para alterar o esquema da visão, também é necessário ter o privilégio CREATE no novo esquema. Para alterar o dono, é necessário ser capaz de executar o comando SET ROLE para a função de banco de dados (role) que será a nova dona, e esta função de banco de dados precisa possuir o privilégio CREATE no esquema da visão. (Estas restrições impõem que alterar o dono não faz nada que não poderia ser feito excluindo e recriando a visão. Entretanto, um superusuário pode alterar o dono de qualquer visão.)

Parâmetros

nome

O nome (opcionalmente qualificado pelo esquema) da visão existente.

nome_da_coluna

O nome da coluna existente.

novo_nome_da_coluna

O novo nome para a coluna existente.

IF EXISTS

Não será relatado nenhum erro se a visão não existir. É emitido um aviso neste caso.

SET/DROP DEFAULT

Estas formas definem ou removem o valor padrão de uma coluna. O valor padrão de uma coluna de visão é aplicado em qualquer comando INSERT ou UPDATE cujo destino seja a visão, antes de aplicar quaisquer regras ou gatilhos para a visão. O padrão da visão, portanto, terá precedência sobre quaisquer valores padrão das relações subjacentes.

novo_dono

O nome de usuário do novo dono da visão.

novo_nome

O novo nome para a visão.

novo_esquema

O novo esquema para a visão.

SET ( nome_da_opção_da_visão [= valor_da_opção_da_visão] [, ... ] )
RESET ( nome_da_opção_da_visão [, ... ] )

Define ou redefine uma opção da visão. As opções com suporte no momento são:

check_option (enum)

Altera a opção de verificação da visão. O valor deve ser local ou cascaded.

security_barrier (boolean)

Altera a propriedade de barreira de segurança (security_barrier) da visão. Deve ser um valor booleano, como true ou false.

security_invoker (boolean)

Altera a propriedade de chamador de segurança (security_invoker) da visão. Deve ser um valor booleano, como true ou false.

Notas

Por motivos históricos, o comando ALTER TABLE também pode ser usado com visões; mas as únicas variantes de ALTER TABLE permitidas com visões são equivalentes às mostradas acima.

Exemplos

Para mudar o nome da visão de foo para bar:

ALTER VIEW foo RENAME TO bar;

Para anexar um valor padrão de coluna a uma visão atualizável:

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 recebe o valor NULL
INSERT INTO a_view(id) VALUES(2);  -- ts recebe a hora corrente

Conformidade

O comando ALTER VIEW é uma extensão do PostgreSQL ao padrão SQL.

Veja também

CREATE VIEW, DROP VIEW