

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Comando FROM (INSERT, REMOVE o SET) in Amazon QLDB
FROM (INSERT, REMOVE o SET)

**Importante**  
Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto, il 31/07/2025. Per ulteriori dettagli, consulta [Migrare un registro Amazon QLDB su Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

In Amazon QLDB, un'istruzione che inizia con `FROM` è un'estensione PartiQL che consente di inserire e rimuovere elementi specifici all'interno di un documento. Puoi anche usare questa istruzione per aggiornare gli elementi esistenti in un documento, in modo simile al comando. [UPDATE](ql-reference.update.md)

**Nota**  
Per informazioni su come controllare l'accesso per eseguire questo comando PartiQL su tabelle specifiche, vedere. [Guida introduttiva alla modalità di autorizzazione standard in Amazon QLDB](getting-started-standard-mode.md)

**Topics**
+ [

## Sintassi
](#ql-reference.from.syntax)
+ [

## Parametri
](#ql-reference.from.parameters)
+ [

## Raccolte annidate
](#ql-reference.from.nested-collections)
+ [

## Valore restituito
](#ql-reference.from.return)
+ [

## Esempi
](#ql-reference.from.examples)
+ [

## Esecuzione programmatica utilizzando il driver
](#ql-reference.from.driver)

## Sintassi


**FROM-INSERT**

Inserisce un nuovo elemento all'interno di un documento esistente. Per inserire un nuovo documento di primo livello in una tabella, è necessario utilizzare[INSERT](ql-reference.insert.md).

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

**DA-RIMUOVI**

Rimuovi un elemento esistente all'interno di un documento o rimuovi un intero documento di primo livello. Quest'ultima è semanticamente la stessa della sintassi tradizionale. [DELETE](ql-reference.delete.md)

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

**DAL SET**

Aggiorna uno o più elementi all'interno di un documento. Se un elemento non esiste, viene inserito. È semanticamente la stessa della sintassi tradizionale[UPDATE](ql-reference.update.md).

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

## Parametri


***table\$1name***  
Il nome della tabella utente contenente i dati da modificare. Le istruzioni DML sono supportate solo nella [visualizzazione utente](working.userdata.md) predefinita. Ogni istruzione può essere eseguita solo su una singola tabella.  
In questa clausola, è inoltre possibile includere una o più raccolte annidate all'interno della tabella specificata. Per ulteriori dettagli, consulta [Raccolte annidate](#ql-reference.from.nested-collections).

**AS *table\$1alias***  
(Facoltativo) Un alias definito dall'utente che si estende su una tabella da modificare. Tutti gli alias di tabella utilizzati nella clausola`SET`, `REMOVE``INSERT INTO`, o devono essere dichiarati nella `WHERE` clausola. `FROM` La `AS` parola chiave è facoltativa.

**DI *id\$1alias***  
(Facoltativo) Un alias definito dall'utente che si collega al campo di `id` metadati di ogni documento nel set di risultati. L'alias deve essere dichiarato nella clausola utilizzando la `FROM` parola chiave. `BY` Ciò è utile quando si desidera filtrare in base all'[ID del documento](working.metadata.md) durante l'interrogazione della visualizzazione utente predefinita. Per ulteriori informazioni, consulta [Utilizzo della clausola BY per interrogare l'ID del documento](working.metadata.by-clause.md).

**DOVE *condition***  
I criteri di selezione per i documenti da modificare.  
Se si `WHERE` omette la clausola, tutti i documenti della tabella vengono modificati.

***element***  
Un elemento del documento da creare o modificare.

***data***  
Un nuovo valore per l'elemento.

**A *key\$1name***  
Un nome chiave da aggiungere all'interno dei documenti da modificare. È necessario specificare il corrispondente `VALUE` insieme al nome della chiave. Questo è necessario per inserire un nuovo valore `AT` in una posizione specifica all'interno di un documento.

## Raccolte annidate


Sebbene sia possibile eseguire un'istruzione DML solo su una singola tabella, è possibile specificare raccolte nidificate all'interno dei documenti di quella tabella come fonti aggiuntive. Ogni alias dichiarato per una raccolta nidificata può essere utilizzato nella `WHERE` clausola e nella clausola, or. `SET` `INSERT INTO` `REMOVE`

Ad esempio, le `FROM` fonti della seguente istruzione includono sia la `VehicleRegistration` tabella che la struttura nidificata. `Owners.SecondaryOwners`

```
FROM VehicleRegistration r, @r.Owners.SecondaryOwners o
WHERE r.VIN = '1N4AL11D75C109151' AND o.PersonId = 'abc123'
SET o.PersonId = 'def456'
```

Questo esempio aggiorna l'elemento specifico dell'`SecondaryOwners`elenco che contiene un `PersonId` of `'abc123'` all'interno del `VehicleRegistration` documento che contiene un `VIN` di`'1N4AL11D75C109151'`. Questa espressione consente di specificare un elemento di un elenco in base al valore anziché all'indice.

## Valore restituito


`documentId`— L'ID univoco di ogni documento aggiornato o eliminato.

## Esempi


Modifica un elemento all'interno di un documento. Se l'elemento non esiste, viene inserito.

```
FROM Vehicle AS v
WHERE v.VIN = '1N4AL11D75C109151' AND v.Color = 'Silver'
SET v.Color = 'Shiny Gray'
```

Modifica o inserisci un elemento e filtra nel campo dei `id` metadati del documento assegnato dal sistema.

```
FROM Vehicle AS v BY v_id
WHERE v_id = 'documentId'
SET v.Color = 'Shiny Gray'
```

Modifica il `PersonId` campo del *primo* elemento dell'`Owners.SecondaryOwners`elenco all'interno di un documento.

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

Rimuove un elemento esistente all'interno di un documento.

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

Rimuove un intero documento da una tabella.

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

Rimuove il *primo* elemento dell'`Owners.SecondaryOwners`elenco all'interno di un documento della `VehicleRegistration` tabella.

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

Inserisce `{'Mileage':26500}` come coppia nome-valore di primo livello all'interno di un documento della tabella. `Vehicle`

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

Aggiungi `{'PersonId':'abc123'}` come coppia nome-valore nel `Owners.SecondaryOwners` campo di un documento nella tabella. `VehicleRegistration` Nota che questa dichiarazione `Owners.SecondaryOwners` deve già esistere e deve essere un tipo di dati di elenco affinché questa istruzione sia valida. In caso contrario, la parola chiave `AT` è obbligatoria nella `INSERT INTO` clausola.

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

Inserisci `{'PersonId':'abc123'}` come *primo* elemento nell'`Owners.SecondaryOwners`elenco esistente all'interno di un documento.

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

Aggiungi più coppie nome-valore all'`Owners.SecondaryOwners`elenco esistente all'interno di un documento.

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

## Esecuzione programmatica utilizzando il driver


*Per informazioni su come eseguire questa istruzione a livello di codice utilizzando il driver QLDB, consulta i seguenti tutorial in Guida introduttiva al driver:*
+ Java: \$1 [Tutorial di avvio rapido](driver-quickstart-java.md) [Riferimento al libro di cucina](driver-cookbook-java.md)
+ .NET: [Tutorial di avvio rapido](driver-quickstart-dotnet.md) \$1 [Riferimento al libro di cucina](driver-cookbook-dotnet.md)
+ Vai: [Tutorial di avvio rapido](driver-quickstart-golang.md) \$1 [Riferimento al libro di cucina](driver-cookbook-golang.md)
+ Node.js: [Tutorial di avvio rapido](driver-quickstart-nodejs.md) \$1 [Riferimento al libro di cucina](driver-cookbook-nodejs.md)
+ Python: \$1 [Tutorial di avvio rapido](driver-quickstart-python.md) [Riferimento al libro di cucina](driver-cookbook-python.md)