View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

ALTER TABLE

ALTER TABLE altera a definição de uma tabela.

Sintaxe compatível

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name

Descrição

ADD [ COLUMN ] [ IF NOT EXISTS ]

Este formulário adiciona uma nova coluna à tabela, usando a mesma sintaxe de CREATE TABLE. Se IF NOT EXISTS for especificado e já existir uma coluna com esse nome, nenhum erro será gerado.

SET/DROP DEFAULT

Esses formulários definem ou removem o valor padrão de uma coluna (a remoção equivale a definir o valor padrão como NULL). O novo valor padrão será aplicado apenas a comandos INSERT ou UPDATE subsequentes; ele não altera as linhas já existentes na tabela.

DROP NOT NULL

Esse formulário altera uma coluna para permitir valores nulos.

DROP EXPRESSION [ IF EXISTS ]

Esse formulário transforma uma coluna gerada armazenada em uma coluna base comum. Os dados existentes na coluna são preservados, mas alterações futuras deixarão de aplicar a expressão de geração. Se DROP EXPRESSION IF EXISTS for especificado e a coluna não for uma coluna gerada, nenhum erro será gerado. Nesse caso, será emitido um aviso em vez disso.

ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
SET GENERATED { ALWAYS | BY DEFAULT }
DROP IDENTITY [ IF EXISTS ]

Esses formulários alteram se uma coluna é uma coluna de identidade ou alteram o atributo de geração de uma coluna de identidade existente. Para mais detalhes, consulte CREATE TABLE. De modo semelhante a SET DEFAULT, esses formulários afetam apenas o comportamento dos comandos INSERT e UPDATE subsequentes; eles não fazem com que as linhas que já estão na tabela sejam alteradas.

É possível usar a opção sequence_option com ALTER SEQUENCE, como INCREMENT BY. Esses formulários alteram a sequência subjacente a uma coluna de identidade existente.

nota

O Amazon Aurora DSQL exige um valor explícito CACHE ao usar ADD GENERATED AS IDENTITY. Além disso, as colunas de identidade são compatíveis apenas com colunas bigint.

Ao usar colunas de identidade, é necessário considerar cuidadosamente o valor do cache. Para ter mais informações, consulte o texto explicativo “Importante” na página CREATE SEQUENCE.

Para obter orientações sobre a melhor forma de usar colunas de identidade com base nos padrões de workload, consulte Trabalhar com sequências e colunas de identidade.

SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }

Esse formulário define o modo de armazenamento de uma coluna. Para obter detalhes sobre os modos de armazenamento disponíveis, consulte Modo de armazenamento na página CREATE TABLE.

ADD table_constraint_using_index

Este formulário adiciona uma nova restrição UNIQUE a uma tabela com base em um índice exclusivo existente. Todas as colunas do índice serão incluídas na restrição.

O índice deve estar em um estado VALID; não há suporte para adicionar uma restrição exclusiva usando um índice que ainda esteja em construção.

Se um nome de restrição for fornecido, o índice será renomeado para corresponder ao nome da restrição. Caso contrário, a restrição terá o mesmo nome do índice.

Após a execução deste comando, o índice passa a ser “propriedade” da restrição, da mesma forma como se tivesse sido criado por um comando CREATE UNIQUE INDEX ASYNC regular. Em particular, ao remover a restrição, o índice também será excluído.

DROP CONSTRAINT [ IF EXISTS ]

Esse formulário remove a restrição especificada de uma tabela, juntamente com qualquer índice subjacente à restrição. Se IF EXISTS for especificado e a restrição não existir, nenhum erro será gerado. Nesse caso, será emitido um aviso em vez disso.

Importante

No momento, a adição de uma nova restrição é compatível com a expressão CREATE TABLE. A expressão ALTER TABLE ADD CONSTRAINT (espelhando o suporte a DROP CONSTRAINT) ainda não está disponível. Se você tiver dúvidas sobre esse recurso futuro, entre em contato com o AWS Support ou fale diretamente conosco pelo DSQL Public Discord.

OWNER TO

Esse formulário altera o proprietário da tabela para o usuário especificado.

RENAME

Os formulários RENAME alteram o nome de uma tabela, o nome de uma coluna individual de uma tabela ou o nome de uma restrição da tabela. Ao renomear uma restrição que possui um índice subjacente, o índice também é renomeado. Não há impacto sobre os dados armazenados.

SET SCHEMA

Esse formulário move a tabela para outro esquema. Os índices, as restrições e as sequências associados que pertencem às colunas da tabela também são movidos.

Parâmetros

IF EXISTS

Não gere um erro se a tabela não existir. Um aviso é emitido nesse caso.

name

O nome (opcionalmente qualificado pelo esquema) de uma tabela existente a ser alterada. Se ONLY for especificado antes do nome da tabela, somente essa tabela será alterada. Se ONLY não for especificado, a tabela e todas as suas tabelas descendentes (se houver) serão alteradas. Opcionalmente, * pode ser especificado após o nome da tabela para indicar explicitamente que as tabelas descendentes estão incluídas.

column_name

Nome de uma coluna nova ou existente.

new_column_name

Novo nome para uma coluna existente.

new_name

Novo nome da tabela.

data_type

Tipo de dados da nova coluna.

nome_restrição

Nome de uma restrição nova ou existente.

CASCADE

Remova automaticamente os objetos que dependem da restrição removida (por exemplo, exibições que fazem referência à coluna) e, por sua vez, todos os objetos que dependem desses objetos.

RESTRICT

Recuse a remoção da restrição se houver quaisquer objetos dependentes. Esse é o comportamento padrão.

new_owner

O nome de usuário do novo proprietário da tabela.

new_schema

O nome do esquema para o qual a tabela será movida.