

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Comando UPDATE en Amazon QLDB
<a name="ql-reference.update"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

En Amazon QLDB, utilice el comando `UPDATE` para modificar el valor de uno o más elementos dentro de un documento. Si un elemento no existe, se inserta.

También puede usar este comando para insertar y eliminar de forma explícita elementos específicos de un documento, de forma similar a las instrucciones [FROM (INSERT, REMOVE o SET)](ql-reference.from.md).

**nota**  
Para obtener información sobre cómo controlar el acceso para ejecutar este comando PartiQL en tablas específicas, consulte [Introducción al modo de permisos estándar en Amazon QLDB](getting-started-standard-mode.md).

**Topics**
+ [Sintaxis](#ql-reference.update.syntax)
+ [Parámetros](#ql-reference.update.parameters)
+ [Valor devuelto](#ql-reference.update.return)
+ [Ejemplos](#ql-reference.update.examples)
+ [Ejecución mediante programación con el controlador](#ql-reference.update.driver)

## Sintaxis
<a name="ql-reference.update.syntax"></a>

**UPDATE-SET**

Actualice uno o más elementos de un documento. Si un elemento no existe, se inserta. Semánticamente es lo mismo que la instrucción [FROM-SET](ql-reference.from.md).

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
SET element = data [, element = data, ... ]
[ WHERE condition ]
```

**UPDATE-INSERT**

Inserte un elemento nuevo en un documento existente. Para insertar un documento nuevo de nivel superior en una tabla, debe utilizar [INSERT](ql-reference.insert.md).

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
INSERT INTO element VALUE data [ AT key_name ]
[ WHERE condition ]
```

**UPDATE-REMOVE**

Elimine un elemento existente de un documento o elimine todo un documento de nivel superior. Esta última es semánticamente la misma que la sintaxis [DELETE](ql-reference.delete.md) tradicional.

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
REMOVE element
[ WHERE condition ]
```

## Parámetros
<a name="ql-reference.update.parameters"></a>

***table\$1name***  
Nombre de la tabla de usuario que contiene los datos que se van a modificar. Las instrucciones de DML solo se admiten en la [vista de usuario](working.userdata.md) predeterminada. Cada instrucción solo puede ejecutarse en una sola tabla.

**COMO *table\$1alias***  
(Opcional) Un alias definido por el usuario que se extiende a lo largo de una tabla de la que se va a actualizar. La palabra clave `AS` es opcional.

**POR *id\$1alias***  
(Opcional) Un alias definido por el usuario que se enlaza con el campo de metadatos `id` de cada documento del conjunto de resultados. El alias debe declararse en la cláusula `UPDATE` mediante la palabra clave `BY`. Esto resulta útil cuando se desea filtrar por [identificador del documento](working.metadata.md) al consultar la vista de usuario predeterminada. Para obtener más información, consulte [Uso de la cláusula BY para consultar el identificador del documento](working.metadata.by-clause.md).

***element***  
Elemento del documento que se va a crear o modificar.

***data***  
Un nuevo valor para el elemento.

**AT *key\$1name***  
Un nombre clave que se añadirá a los documentos que se van a modificar. Debe especificar el `VALUE` correspondiente junto con el nombre de la clave. Esto es necesario para insertar un nuevo valor `AT` en una posición específica dentro de un documento.

**¿DÓNDE? *condition***  
Criterios de selección para los documentos que se van a modificar.

**nota**  
Si omite la cláusula `WHERE`, se modificarán todos los documentos de la tabla.

## Valor devuelto
<a name="ql-reference.update.return"></a>

`documentId`: el identificador único de cada documento que ha actualizado.

## Ejemplos
<a name="ql-reference.update.examples"></a>

Actualizar un campo de un documento. Si un campo no existe, se inserta.

```
UPDATE Person AS p
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE p.GovId = '111-22-3333'
```

Filtrar por el campo de metadatos del `id` de documento asignado por el sistema.

```
UPDATE Person AS p BY pid
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE pid = 'documentId'
```

Sobrescribir un documento completo.

```
UPDATE Person AS p
SET p = {
    'FirstName' : 'Rosemarie',
    'LastName' : 'Holloway',
    'DOB' : `1977-06-18T`,
    'GovId' : '111-22-3333',
    'GovIdType' : 'Driver License',
    'Address' : '4637 Melrose Street, Ellensburg, WA, 98926'
}
WHERE p.GovId = '111-22-3333'
```

Modificar el campo `PersonId` del *primer* elemento de la lista `Owners.SecondaryOwners` dentro de un documento.

```
UPDATE VehicleRegistration AS r
SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
WHERE r.VIN = '1N4AL11D75C109151'
```

Insertar `{'Mileage':26500}` como un par nombre-valor de nivel superior dentro de un documento de la tabla `Vehicle`.

```
UPDATE Vehicle AS v
INSERT INTO v VALUE 26500 AT 'Mileage'
WHERE v.VIN = '1N4AL11D75C109151'
```

Añadir `{'PersonId':'abc123'}` como un par nombre-valor en el campo `Owners.SecondaryOwners` de un documento de la tabla `VehicleRegistration`. Tenga en cuenta que `Owners.SecondaryOwners` debe existir ya y debe ser un tipo de datos de lista para que esta instrucción sea válida. De lo contrario, la palabra clave `AT` es obligatoria en la cláusula `INSERT INTO`.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
WHERE r.VIN = '1N4AL11D75C109151'
```

Insertar `{'PersonId':'abc123'}` como *primer* elemento de la lista `Owners.SecondaryOwners` existente dentro de un documento.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
WHERE r.VIN = '1N4AL11D75C109151'
```

Añadir varios pares de nombre-valor a la lista `Owners.SecondaryOwners` existente dentro de un documento.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
WHERE r.VIN = '1N4AL11D75C109151'
```

Insertar un elemento existente en un documento.

```
UPDATE Person AS p
REMOVE p.Address
WHERE p.GovId = '111-22-3333'
```

Eliminar un documento completo de una tabla.

```
UPDATE Person AS p
REMOVE p
WHERE p.GovId = '111-22-3333'
```

Eliminar el *primer* elemento de la lista `Owners.SecondaryOwners` dentro de un documento en la tabla `VehicleRegistration`.

```
UPDATE VehicleRegistration AS r
REMOVE r.Owners.SecondaryOwners[0]
WHERE r.VIN = '1N4AL11D75C109151'
```

## Ejecución mediante programación con el controlador
<a name="ql-reference.update.driver"></a>

Para aprender a ejecutar esta instrucción mediante programación con el controlador de QLDB, consulte los siguientes tutoriales en *Introducción al controlador*:
+ Java: [Tutorial de inicio rápido](driver-quickstart-java.md) \$1 [Referencia de libro de recetas](driver-cookbook-java.md)
+ .NET: [Tutorial de inicio rápido](driver-quickstart-dotnet.md) \$1 [Referencia de libro de recetas](driver-cookbook-dotnet.md)
+ Go: [Tutorial de inicio rápido](driver-quickstart-golang.md) \$1 [Referencia de libro de recetas](driver-cookbook-golang.md)
+ Node.js: [Tutorial de inicio rápido](driver-quickstart-nodejs.md) \$1 [Referencia de libro de recetas](driver-cookbook-nodejs.md)
+ Python: [Tutorial de inicio rápido](driver-quickstart-python.md) \$1 [Referencia de libro de recetas](driver-cookbook-python.md)