ALTERTABLE

ADD COLUMN

Este formulário adiciona uma nova coluna à tabela, usando a mesma sintaxe de CREATE TABLE.

DROP COLUMN

Este formulário deixa cair uma coluna de uma tabela. Índices e restrições de tabela envolvendo a coluna também serão automaticamente descartados. Você precisará dizer CASCADE se algo fora da tabela depende da coluna, por exemplo, referências ou visões chave estrangeiras. Se EXISTS for especificado e a coluna não existir, nenhum erro será atirado. Neste caso um aviso é emitido no lugar.

SET DATA TYPE

Este formulário muda o tipo de coluna de uma tabela. Índices e restrições de tabelas simples envolvendo a coluna serão automaticamente convertidos para usar o novo tipo de coluna, reparando a expressão originalmente fornecida. A cláusula opcional COLLATE especifica uma colação para a nova coluna; se omitida, a colação é o padrão para o novo tipo de coluna. A cláusula opcional USING especifica como calcular o valor da nova coluna a partir da antiga; se omitida, a conversão padrão é a mesma que um elenco de atribuição do tipo de dados antigo para o novo. Uma cláusula de USING deve ser fornecida se não houver um elenco implícito ou de atribuição do antigo para o novo tipo.

SET/DROP DEFAULT

Essas formas definem ou removem o valor padrão para uma coluna. Os valores padrão só se aplicam aos comandos INSERT subsequentes; eles não fazem com que as linhas já na tabela sejam alteradas. Os valores padrão também podem ser criados para as views, neste caso são inseridos nas instruções INSERT da view antes da regra INSERT da view ser aplicada.

SET/DROP NOT NULL

Estes formulários alteram se uma coluna é marcada para permitir valores nulos ou para rejeitar valores nulos. Você só pode usar SET NOT NULL quando a coluna não contém valores nulos.

SET STATISTICS

Este formulário define o objetivo de coleta de estatísticas por coluna para operações ANALYZE subsequentes. O alvo pode ser definido no intervalo de 0 a 10000; alternativamente, defina-o como -1 para retornar ao uso do alvo de estatísticas padrão do sistema (default_statistics_target). Para mais informações sobre o uso de estatísticas pelo planejador de consultas PostgreSQL, consulte a Seção 14.2.

SET ( attribute_option = valor )
RESET ( attribute_option )

Esta forma define ou redefine as opções por atributo. Atualmente, as únicas opções definidas por atributo são n_distinct e n_distinct_inherited, que substituem as estimativas do número de valores-distintos feitas por operações ANALYZE subseqüentes. n_distinct afeta as estatísticas da própria tabela, enquanto n_distinct_inherited afeta as estatísticas coletadas para a tabela mais seus filhos herdeiros. Quando definido para um valor positivo, ANALYZE assumirá que a coluna contém exatamente o número especificado de valores não-nulosos distintos. Quando definida para um valor negativo, que deve ser maior ou igual a -1, ANALYZE assumirá que o número de valores não-nulos distintos na coluna é linear no tamanho da tabela; a contagem exata deve ser calculada multiplicando o tamanho estimado da tabela pelo valor absoluto do número dado. Por exemplo, um valor de -1 implica que todos os valores na coluna são distintos, enquanto um valor de -0,5 implica que cada valor aparece duas vezes na média. Isso pode ser útil quando o tamanho da tabela muda com o tempo, uma vez que a multiplicação pelo número de linhas na tabela não é realizada até o tempo de planejamento da consulta. Especificar um valor de 0 para reverter para estimar o número de valores distintos normalmente. Para mais informações sobre o uso de estatísticas pelo planejador de consultas PostgreSQL, consulte a Seção 14.2.

SET STORAGE

Este formulário define o modo de armazenamento para uma coluna. Isto controla se esta coluna é mantida em linha ou em uma tabela TOAST secundária, e se os dados devem ser comprimidos ou não. PLAIN deve ser usado para valores de comprimento fixo, como inteiro e está em linha, sem compressão. MAIN é para dados em linha, compressíveis. EXTERNAL é para dados externos, não comprimidos, e EXTENDED é para dados externos, comprimidos. EXTENDED é o padrão para a maioria dos tipos de dados que suportam armazenamento não-PLAIN. O uso de EXTERNAL fará com que as operações de substring em textos muito grandes e valores de byte sejam executadas mais rapidamente, sob pena de aumentar o espaço de armazenamento. Note que o SET STORAGE por si só não altera nada na tabela, apenas define a estratégia a ser seguida durante futuras atualizações da tabela. Veja Seção 55.2 para mais informações.

ADD table_constraint

Este formulário adiciona uma nova restrição a uma tabela usando a mesma sintaxe de CREATE TABLE, mais a opção NOT VALID, que atualmente só é permitida para restrições de chave estrangeira. Se a restrição estiver marcada NOT VALID, a verificação inicial potencialmente longa para verificar se todas as linhas na tabela satisfazem a restrição é ignorada. A restrição ainda será aplicada contra inserções ou atualizações subseqüentes (ou seja, elas falharão, a menos que haja uma linha correspondente na tabela referenciada). Mas o banco de dados não assume que a restrição se mantém para todas as linhas da tabela, até que seja validada por meio da opção VALIDATE CONSTRAINT.

ADD table_constraint_using_index

Este formulário adiciona uma nova restrição PRIMARY KEY ou UNIQUE a uma tabela baseada em um índice único existente. Todas as colunas do índice serão incluídas na restrição.

O índice não pode ter colunas de expressão nem ser um índice parcial. Além disso, ele deve ser um índice b-tree com ordenação padrão. Estas restrições asseguram que o índice é equivalente a um que seria construído por um comando normal ADD PRIMARY KEY ou ADD UNIQUE.

Se PRIMARY KEY for especificado, e as colunas do índice ainda não estiverem marcadas NOT NULL, então este comando tentará fazer ALTER COLUMN SET NOT NULL contra cada uma dessas colunas. Isso requer uma verificação completa da tabela para verificar se a(s) coluna(s) não contém(m) nulo(s). Em todos os outros casos, esta é uma operação rápida.

Se um nome de restrição for fornecido, então o índice será renomeado para corresponder ao nome da restrição. Caso contrário, a restrição será nomeada da mesma forma que index.

Após este comando ser executado, o índice é “propriedade” da restrição, da mesma forma que se o índice tivesse sido construído por um comando normal ADD PRIMARY KEY ou ADD UNIQUE. Em particular, a eliminação da restrição fará o índice desaparecer também.

Note: Adicionar uma restrição usando um índice existente pode ser útil em situações onde uma nova restrição precisa ser adicionada sem bloquear atualizações de tabelas por um longo tempo. Para fazer isso, criar o índice usando CREATE INDEX CONCURRENTLY, e depois instalá-lo como uma restrição oficial usando essa sintaxe. Veja o exemplo abaixo.

VALIDATE CONSTRAINT

Esta forma valida uma restrição de chave estrangeira que foi previamente criada como NÃO VÁLIDA, digitalizando a tabela para garantir que não existem linhas inigualáveis. Nada acontece se a restrição já estiver marcada como válida.

Validação pode ser um processo longo em tabelas maiores e atualmente requer um bloqueio de ACESSO EXCLUSIVO. O valor de separar a validação da criação inicial é que o usuário pode adiar a validação para tempos menos ocupados ou pode ser usado para dar tempo adicional para corrigir erros pré-existentes enquanto evita novos erros.

DROP CONSTRAINT

Esta forma deixa cair a restrição especificada em uma tabela. Se EXISTS for especificado e a restrição não existir, nenhum erro é jogado. Nesse caso, é emitido um aviso.

TRIGGER DISABLE/ENABLE TRIGGER

Esses formulários configuram a queima do(s) trigger(s) pertencente(s) à tabela. Um disparo desativado ainda é conhecido pelo sistema, mas não é executado quando ocorre seu evento de disparo. Para um disparo diferido, o status de habilitação é verificado quando o evento ocorre, e não quando a função de disparo é executada de fato. É possível desativar ou ativar um único acionador especificado pelo nome, ou todos os acionadores na tabela, ou apenas acionadores do usuário (esta opção exclui acionadores de restrição gerados internamente, como aqueles utilizados para implementar restrições de chave estrangeira ou restrições de exclusividade e exclusão deferíveis). A desativação ou ativação de acionadores de restrição gerados internamente requer privilégios de superusuário; isso deve ser feito com cautela, pois é claro que a integridade da restrição não pode ser garantida se os acionadores não forem executados. O mecanismo de disparo do acionamento também é afetado pela variável de configuração session_replication_role. Simplesmente gatilhos habilitados serão disparados quando a função de replicação for “origem” (o padrão) ou “local”. Gatilhos configurados como ENABLE REPLICA somente serão disparados se a sessão estiver em modo “réplica”, e gatilhos configurados como ENABLE SEMPRE serão disparados independentemente do modo de replicação atual.

DISABLE/ENABLE RULE

Estes formulários configuram o disparo de regras de reescrita pertencentes à tabela. Uma regra desabilitada ainda é conhecida pelo sistema, mas não é aplicada durante a reescrita da consulta. As semânticas são como para triggers desabilitados/abilitados. Esta configuração é ignorada para regras ON SELECT, que são sempre aplicadas para manter as views funcionando mesmo que a sessão atual esteja em uma função de replicação não-definida.

CLUSTER

Este formulário seleciona o índice padrão para futuras operações CLUSTER. Este formulário remove da tabela a especificação do índice CLUSTER mais recentemente utilizada. Isto afecta futuras operações de cluster que não especifiquem um índice.

SET WITH OIDS

Este formulário adiciona uma coluna do sistema oid à tabela (ver Secção 5.4). Ele não faz nada se a tabela já tiver OIDs.

Note que isto não é equivalente a ADD COLUMN oid oid; isto adicionaria uma coluna normal que por acaso foi nomeada oid, não uma coluna do sistema.

SET WITWUT OIDS

Este formulário remove a coluna do sistema oid da tabela. Isto é exatamente equivalente a DROP COLUMN oid RESTRICT, exceto que ele não reclamará se já não houver coluna oid.

SET ( storage_parameter = valor )

Este formulário muda um ou mais parâmetros de armazenamento para a tabela. Consulte Parâmetros de armazenamento para obter detalhes sobre os parâmetros disponíveis. Note que o conteúdo da tabela não será modificado imediatamente por este comando; dependendo do parâmetro, você pode precisar reescrever a tabela para obter os efeitos desejados. Isso pode ser feito com VACUUM FULL, CLUSTER ou uma das formas de ALTER TABLE que força uma tabela a ser reescrita.

Note: Enquanto CREATE TABLE permite que OIDS seja especificado na sintaxe WITH (storage_parameter), ALTER TABLE não trata OIDS como um parâmetro de armazenamento. Ao invés disso, use os formulários SET WITH OIDS e SET WITHOUT OIDS para alterar o status do OID.

RESET ( storage_parameter )

Este formulário redefine um ou mais parâmetros de armazenamento para seus padrões. Como com SET, uma reescrita de tabela pode ser necessária para atualizar a tabela completamente.

INHERIT parent_table

Este formulário adiciona a tabela de destino como um novo filho da tabela pai especificada. Subsequentemente, as consultas contra o pai incluirão registros da tabela de destino. Para ser adicionada como um filho, a tabela de destino já deve conter todas as mesmas colunas que o pai (ela também pode ter colunas adicionais). As colunas devem ter tipos de dados correspondentes e, se NÃO tiverem restrições NULL no pai, também devem ter restrições NOT NULL no filho.

Altambém deve haver restrições de tabela filha correspondentes para todas as restrições CHECK do pai. Atualmente as restrições UNIQUE, PRIMARY KEY e FOREIGN KEY não são consideradas, mas isso pode mudar no futuro.

NO INHERIT parent_table

Este formulário remove a tabela de destino da lista de filhos da tabela dos pais especificada. Consultas contra a tabela pai não mais incluirão registros extraídos da tabela de destino.

DE nome_do_tipo

Este formulário liga a tabela a um tipo composto como se a CREATE TABLE OF a tivesse formado. A lista de nomes e tipos de colunas da tabela deve corresponder precisamente à do tipo composto; a presença de uma coluna do sistema oid é permitida para diferir. A tabela não deve herdar de nenhuma outra tabela. Estas restrições garantem que CREATE TABLE OF permitiria uma definição de tabela equivalente.

NOT OF

Este formulário dissocia uma tabela digitada do seu tipo.

OWNER

Este formulário muda o dono da tabela, sequência ou vista para o usuário especificado.

SET TABLESPACE

Este formulário muda o tablespace da tabela para o tablespace especificado e move o(s) arquivo(s) de dados associado(s) à tabela para o novo tablespace. Os índices na tabela, se existirem, não são movidos; mas podem ser movidos separadamente com comandos adicionais SET TABLESPACE. Veja também CREATE TABLESPACE.

RENAME

Os formulários RENAME alteram o nome de uma tabela (ou um índice, sequência ou vista) ou o nome de uma coluna individual de uma tabela. Não há efeito sobre os dados armazenados.

SET SCHEMA

Este formulário move a tabela para outro esquema. Índices associados, restrições e seqüências de propriedade das colunas da tabela também são movidas.

Deixe uma resposta

O seu endereço de email não será publicado.