UPDATE - Amazon Redshift

UPDATE

Actualiza valores en una o más columnas de la tabla cuando se cumple una condición.

nota

El tamaño máximo de una instrucción SQL es de 16 MB.

Sintaxis

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE table_name [ [ AS ] alias ] SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]

Parámetros

Cláusula WITH

Se trata de una cláusula opcional que especifica una o más common-table-expressions. Consulte Cláusula WITH.

table_name

Una tabla temporal o persistente. Solo el propietario de la tabla o un usuario con el privilegio UPDATE en la tabla puede actualizar filas. Si utiliza la cláusula FROM o selecciona desde tablas en una expresión o condición, debe tener el privilegio SELECT en esas tablas. No puede asignar un alias a la tabla aquí; no obstante, puede especificar un alias en la cláusula FROM.

nota

Las tablas externas de Amazon Redshift Spectrum solo se pueden leer. No puede utilizar el comando UPDATE en una tabla externa.

alias

Se trata del nombre alternativo temporal para una tabla de destino. Los alias son opcionales. La palabra clave AS es siempre opcional.

SET column =

Una o más columnas que desea modificar. Las columnas que no están en la lista conservan sus valores actuales. No incluya el nombre de la tabla en la especificación de una columna de destino. Por ejemplo, UPDATE tab SET tab.col = 1 no es válido.

expresión

Una expresión que define el nuevo valor para la columna especificada.

DEFAULT

Actualiza la columna con el valor predeterminado que se asignó a la columna en la instrucción CREATE TABLE.

FROM tablelist (lista_de_tablas)

Puede actualizar una tabla al hacer referencia a información de otras tablas. Enumere estas otras tablas en la cláusula FROM o use una subconsulta como parte de la condición WHERE. Las tablas enumeradas en la cláusula FROM pueden tener alias. Si necesita incluir la tabla de destino de la instrucción UPDATE en la lista, utilice un alias.

WHERE condition

La cláusula opcional que limita las actualizaciones a filas que coinciden con una condición. Cuando la condición devuelve true, se actualizan las columnas SET especificadas. La condición puede ser un predicado simple en una columna o una condición basada en el resultado de una subconsulta.

Puede otorgar un nombre a cualquier tabla de la subconsulta, incluida la tabla de destino para UPDATE.

Notas de uso

Después de actualizar una gran cantidad de filas en una tabla:

  • Limpie la tabla para recuperar espacio de almacenamiento y reordene las filas.

  • Analice la tabla para actualizar las estadísticas para el planificador de consultas.

Las combinaciones externas izquierdas, derechas y completas no se admiten en la cláusula FROM de una instrucción UPDATE; devuelven el siguiente error:

ERROR: Target table must be part of an equijoin predicate

Si necesita especificar una combinación externa, utilice una subconsulta en la cláusula WHERE de la instrucción UPDATE.

Si la instrucción UPDATE requiere una combinación automática con la tabla de destino, necesita especificar la condición de la combinación, así como los criterios de la cláusula WHERE que califican filas para la operación de actualización. En general, cuando la tabla de destino se combina consigo misma o con otra tabla, una práctica recomendada es utilizar una subconsulta que separe claramente las condiciones de combinación de los criterios que califican filas para actualizaciones.

Las consultas UPDATE con varias coincidencias por fila arrojan un error cuando el parámetro de configuración error_on_nondeterministic_update se establece en true. Para obtener más información, consulte error_on_nondeterministic_update.

Puede actualizar una columna GENERATED BY DEFAULT AS IDENTITY. Las columnas definidas como GENERATED BY DEFAULT AS IDENTITY pueden actualizarse con los valores que se proporcionen. Para obtener más información, consulte GENERATED BY DEFAULT AS IDENTITY.