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;