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 EXISTSy 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
INSERToUPDATEposteriores; 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 EXISTSy 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 IDENTITYSET 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 comandosINSERTyUPDATEposteriores; no provocan cambios en las filas que ya se encuentran en la tabla.La opción
sequence_optiones una opción compatible con ALTER SEQUENCE comoINCREMENT BY. Estos formularios modifican la secuencia que subyace a una columna de identidad existente.nota
Amazon Aurora DSQL requiere un valor
CACHEexplícito cuando se utilizaADD GENERATED AS IDENTITY. Además, las columnas de identidad solo se admiten en columnasbigint.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.
ADDtable_constraint_using_index-
Este formulario agrega una nueva restricción
UNIQUEa 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 ASYNCnormal. 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 EXISTSy 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 TABLEadmite añadir una nueva restricción.ALTER TABLE ADD CONSTRAINT(compatibilidad de replicación paraDROP 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
RENAMEcambian 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
ONLYantes del nombre de la tabla, solo se modifica esa tabla. Si no se especificaONLY, 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.