View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

ALTER TABLE

ALTER TABLE cambia la definición de una tabla.

Sintaxis admitida

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

Descripción

ADD [ COLUMN ] [ IF NOT EXISTS ]

Este formulario añade una nueva columna a la tabla utilizando la misma sintaxis que CREATE TABLE. Si se especifica IF NOT EXISTS y ya existe una columna con este nombre, no se genera ningún error.

SET/DROP DEFAULT

Estos formularios establecen o eliminan el valor por defecto de una columna (siendo la eliminación equivalente a establecer el valor por defecto en NULL). El nuevo valor por defecto solo se aplicará en los comandos INSERT o UPDATE posteriores; no provoca ningún cambio en las filas que ya figuran en la tabla.

DROP NOT NULL

Este formulario cambia una columna para permitir valores nulos.

DROP EXPRESSION [ IF EXISTS ]

Este formulario convierte una columna generada almacenada en una columna base normal. Se retendrán los datos existentes en las columnas, pero los cambios futuros ya no se aplicarán mediante la expresión de generación. Si se especifica DROP EXPRESSION IF EXISTS y la columna no es una columna generada, no se genera ningún error. En este caso, se emite un aviso en su lugar.

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

Estos formularios cambian si una columna es una columna de identidad o cambian el atributo de generación de una columna de identidad existente. Para obtener más información, consulte CREATE TABLE. Al igual que SET DEFAULT, estos formularios solo afectan al comportamiento de los comandos INSERT y UPDATE posteriores; no provocan cambios en las filas que ya se encuentran en la tabla.

La opción sequence_option es una opción compatible con ALTER SEQUENCE como INCREMENT BY. Estos formularios modifican la secuencia que subyace a una columna de identidad existente.

nota

Amazon Aurora DSQL requiere un valor CACHE explícito cuando se utiliza ADD GENERATED AS IDENTITY. Además, las columnas de identidad solo se admiten en columnas bigint.

Cuando se utilizan columnas de identidad, se debe considerar con cuidado el valor de la caché. Para obtener más información, consulte el aviso Importante de la página CREATE SEQUENCE.

Para obtener orientación sobre la mejor manera de utilizar las columnas de identidad en función de los patrones de carga de trabajo, consulte Trabajar con secuencias y columnas de identidad.

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

Este formulario establece el modo de almacenamiento de una columna. Para obtener más información sobre los modos de almacenamiento disponibles, consulte Modo de almacenamiento en la página CREATE TABLE.

ADD table_constraint_using_index

Este formulario agrega una nueva restricción UNIQUE a una tabla en función de un índice único existente. Todas las columnas del índice se incluirán en la restricción.

El índice debe estar en un estado VALID; no se admite agregar una restricción única mediante un índice mientras el índice se está creando actualmente.

Si se proporciona un nombre de restricción, se cambiará el nombre del índice para que coincida con el nombre de la restricción. De lo contrario, la restricción tendrá el mismo nombre que el índice.

Tras ejecutar este comando, el índice pasa a ser propiedad de la restricción, del mismo modo que si el índice lo hubiera creado un comando CREATE UNIQUE INDEX ASYNC normal. En concreto, si se elimina la restricción, el índice también desaparecerá.

DROP CONSTRAINT [ IF EXISTS ]

Este formulario elimina la restricción especificada en una tabla, junto con cualquier índice subyacente a la restricción. Si se especifica IF EXISTS y la restricción no existe, no se genera ningún error. En este caso, se emite un aviso en su lugar.

importante

Actualmente, la expresión CREATE TABLE admite añadir una nueva restricción. ALTER TABLE ADD CONSTRAINT (compatibilidad de replicación para DROP CONSTRAINT) aún no está disponible. Si tiene preguntas sobre esta próxima característica, póngase en contacto con AWS Support o directamente a través del Discord público de DSQL.

OWNER TO

Este formulario cambia el propietario de la tabla al usuario especificado.

RENAME

Los formularios RENAME cambian el nombre de una tabla, el nombre de una columna individual de una tabla o el nombre de una restricción de la tabla. Al cambiar el nombre de una restricción que tiene un índice subyacente, también se cambia el nombre del índice. Esto no afecta en modo alguno a los datos almacenados.

SET SCHEMA

Este formulario mueve la tabla a otro esquema. También se mueven los índices, las restricciones y las secuencias asociadas a las columnas de la tabla.

Parameters

IF EXISTS

No generar un error si la tabla no existe. En este caso, se emite un aviso.

name

El nombre (opcionalmente calificado por el esquema) de una tabla existente que se va a modificar. Si se especifica ONLY antes del nombre de la tabla, solo se modifica esa tabla. Si no se especifica ONLY, la tabla y todas sus tablas descendientes (si las hay) se modifican. Si lo desea, se puede especificar * después del nombre de la tabla para indicar explícitamente que se incluyen las tablas descendientes.

column_name

Nombre de una columna nueva o ya existente.

new_column_name

Nuevo nombre para una columna existente.

new_name

Nuevo nombre para la tabla.

data_type

Tipo de datos de la columna nueva.

constraint_name

Nombre de una restricción nueva o ya existente.

CASCADE

Elimine automáticamente los objetos que dependan de la restricción eliminada (por ejemplo, las vistas que hagan referencia a la columna) y, a su vez, todos los objetos que dependan de esos objetos.

RESTRICT

No elimine la restricción si hay algún objeto dependiente. Este es el comportamiento predeterminado.

new_owner

El nombre de usuario del nuevo propietario de la tabla.

new_schema

Nombre del esquema al que se moverá la tabla.