Exemplos de ALTER TABLE ADD e DROP COLUMN - Amazon Redshift

Exemplos de ALTER TABLE ADD e DROP COLUMN

Os exemplos a seguir demonstram como usar o comando ALTER TABLE para adicionar e depois remover colunas básicas de tabela, e também como remover uma coluna com um objeto dependente.

Usar os comandos ADD e depois DROP em uma coluna básica

O exemplo a seguir adiciona uma coluna FEEDBACK_SCORE independente à tabela USERS. Esta coluna simplesmente contém um inteiro, e o valor padrão dessa coluna é NULL (sem pontuação de comentário).

Primeiro, consulte a tabela de catálogo PG_TABLE_DEF para exibir o esquema da tabela USERS:

column | type | encoding | distkey | sortkey --------------+------------------------+----------+---------+-------- userid | integer | delta | true | 1 username | character(8) | lzo | false | 0 firstname | character varying(30) | text32k | false | 0 lastname | character varying(30) | text32k | false | 0 city | character varying(30) | text32k | false | 0 state | character(2) | bytedict | false | 0 email | character varying(100) | lzo | false | 0 phone | character(14) | lzo | false | 0 likesports | boolean | none | false | 0 liketheatre | boolean | none | false | 0 likeconcerts | boolean | none | false | 0 likejazz | boolean | none | false | 0 likeclassical | boolean | none | false | 0 likeopera | boolean | none | false | 0 likerock | boolean | none | false | 0 likevegas | boolean | none | false | 0 likebroadway | boolean | none | false | 0 likemusicals | boolean | none | false | 0

Depois adicione a coluna feedback_score:

alter table users add column feedback_score int default NULL;

Selecione a coluna FEEDBACK_SCORE em USERS para confirmar se ela foi adicionada:

select feedback_score from users limit 5; feedback_score ---------------- NULL NULL NULL NULL NULL

Remova a coluna para restabelecer o DDL original:

alter table users drop column feedback_score;

Descartar uma coluna com um objeto dependente

O exemplo a seguir descarta uma coluna que possui um objeto dependente. Como resultado, o objeto dependente também é removido.

Para começar, adicione a coluna FEEDBACK_SCORE de novo à tabela USERS:

alter table users add column feedback_score int default NULL;

Em seguida, crie uma exibição chamada USERS_VIEW na tabela USERS:

create view users_view as select * from users;

Depois, tente remover a coluna FEEDBACK_SCORE da tabela USERS. A instrução DROP usa o comportamento padrão (RESTRICT):

alter table users drop column feedback_score;

O Amazon Redshift exibe uma mensagem de erro indicando que a coluna não pode ser descartada porque outro objeto depende dela.

Tente remover a coluna FEEDBACK_SCORE novamente, desta vez especificando em CASCADE para eliminar todos os objetos dependentes:

alter table users drop column feedback_score cascade;