MODIFICAR TABLA tabla [ * ] AÑADIR [ COLUMNA ] columna tipo MODIFICAR TABLA tabla [ * ] MODIFICAR [ COLUMNA ] columna { SET DEFAULT valor | DROP DEFAULT } MODIFICAR TABLA tabla [ * ] RENOMBRAR [ COLUMNA ] columna A nueva columna MODIFICAR TABLA tabla RENOMBRAR A nueva tabla |
MODIFICAR TABLA cambia la definición de una tabla existente. La orden AÑADIR COLUMNA añade una nueva columna a la tabla usando la misma sintaxis que CREATE TABLE. La orden MODIFICAR COLUMNA le permite poner o eliminar los valores por defecto de la columna. Notese que los valores por defecto sólo se aplicaran a las lineas que inserte nuevas. La clausula RENOMBRAR causa que el nombre de una tabla o de una columna cambie sin que se modifique ninguno de los datos contenidos en la tabla afectada. De este modo, la tabla o la columna permanecerá del mismo tipo y tamaño después de que este comando sea ejecutado.
Usted debe ser el creador de esta tabla para poder cambiar su esquema.
The palabra clave COLUMNA es muy usada por lo que se debe omitir.
"*" siguiendo a un nombre de una talba indica que la orden debe ejecutarse sobre esa tabla y todas las tablas que esten bajo ella en la jerarquía subsequente; por defecto, el atributo no será añadido a o renombrado en ninguna de las subclases. Esto siempre se debe hacer cuando se añade o modifica un atributo en una superclase. Si no es así, las preguntas en la jerarquía subsequente como
SELECCIONAR nueva columna DESDE SuperClase* |
En la presente implementación, las clausulas por defecto y limitadoras para la nueva columna seran ignoradas. Usted puede usar la ordenPONER VALORES POR DEFECTO de MODIFICAR TABLA para poner los valores por defecto más tarde. (Usted tendrá también que actualizar las lineas existentes a los nuevos valores por defecto, usando UPDATE.)
Usted debe ser el creador de la clase para poder cambiar el esquema. Renombrar cualquier parte de un esquema del catálogo de un sistema no está permitido. La Guía del Usuario de PostgreSQL tiene más información de las herencias subsequentes.
Dirígase aCREAR TABLA para una descipción más amplia de los argumentos válidos.
Para añadir a una columna de tipo VARCHAR a una tabla:
MODIFICAR TABLA distribuidores AÑADIR COLUMNA direcciones VARCHAR(30); |
Para renombrar una columna existente:
MODIFICAR TABLA distribuidores RENOMBRAR COLUMNA direcciones A ciudad; |
Para renombrar una tabla existente:
MODIFICAR TABLA distribuidores RENOMBRA A proveedores; |
La orden AÑADIR COLUMNA está asumida con la excepción de que no soporta los valores por defecto y limitaciones, como se explicó más arriba. La orden MODIFICAR COLUMNA está en sumisión completa.
SQL92 especifica algunas capacidades adicionales para MODIFICAR TABLA órdenes que no están todavía directamente soportadas por PostgreSQL:
MODIFICAR TABLA tabla AÑADIR definición de limitación de tabla MODIFICAR TABLA tabla ELIMINAR LIMITACION limitación { RESTRICT | CASCADE } |
Añadir o eliminar una limitación de tabla (como una limitación de comprobación, limitación única, o limitación de orden extraña). Para crear o eliminar una limitación única, crear o eliminar un índice único, respectivamente (ver CREATE INDEX). Para cambiar otras clase de limitaciones necesita recrear y recargar la tabla usando otros parámetros para la CREATE TABLE orden.
Por ejemplo, para eliminar cualquier limitación en una tabla distribuidores:
CREAR TABLA temp COMO SELECCIONAR * DESDE distribuidores; ELIMINAR TABLA distribuidores; CREAR TABLA distribuidores COMO SELECCIONAR * DESDE temp; ELIMINAR TABLA temp; |
MODIFICAR TABLA tabla ELIMINAR [ COLUMNA ] columna { RESTRICT | CASCADE } |
Eliminar una columna de una tabla. Corrientemente, para eliminar una columan existente la tabla debe ser recreada y recargada:
CREAR TABLA temp COMO SELECCIONAR did, ciudad DESDE distribuidores; ELIMINAR TABLA distribuidores; CREAR TABLA distribuidores ( did DECIMAL(3) DEFAULT 1, name VARCHAR(40) NOT NULL, ); INSERTAR DENTRO distribuidores SELECCIONAR * DESDE temp; ELIMINAT TABLA temp; |
Las clausulas para renombrar columnas y tablas son extensiones para PostgreSQL SQL92 no las provee.