Ejemplos de ALTER TABLE ADD y DROP COLUMN
En los siguientes ejemplos se muestra cómo usar ALTER TABLE para agregar y eliminar la columna de una tabla básica y, también, cómo eliminar una columna con un objeto dependiente.
Utilizar ADD y, luego, DROP en una columna básica
En el siguiente ejemplo, se agrega una columna FEEDBACK_SCORE independiente a la tabla USERS. Esta columna contiene un valor entero, y el valor predeterminado de esta columna es NULL (no hay marcador de retroalimentación).
En primer lugar, consulte la tabla de catálogos PG_TABLE_DEF para ver el esquema de la tabla 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
Ahora, agregue la columna feedback_score:
alter table users add column feedback_score int default NULL;
Seleccione la columna FEEDBACK_SCORE de USERS para verificar que se haya agregado:
select feedback_score from users limit 5;
feedback_score ---------------- NULL NULL NULL NULL NULL
Arrastre la columna para restablecer la DDL original:
alter table users drop column feedback_score;
Eliminación de una columna con un objeto dependiente
En el siguiente ejemplo, se elimina una columna que tiene un objeto dependiente. Como resultado, también se elimina el objeto dependiente.
Para comenzar, agregue la columna FEEDBACK_SCORE a la tabla USERS nuevamente:
alter table users add column feedback_score int default NULL;
Luego, cree una vista de la tabla USERS denominada USERS_VIEW:
create view users_view as select * from users;
Ahora, pruebe eliminar la columna FEEDBACK_SCORE de la tabla USERS. Esta instrucción DROP usa el comportamiento predeterminado (RESTRICT):
alter table users drop column feedback_score;
Amazon Redshift muestra un mensaje de error en el que se indica que la columna no puede eliminarse porque otro objeto depende de ella.
Pruebe eliminar la columna FEEDBACK_SCORE nuevamente y, esta vez, especifique CASCADE para eliminar todos los objetos dependientes:
alter table users drop column feedback_score cascade;