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à.
UpdateItem
Importante
In questa sezione si fa riferimento alla versione API 2011-12-05, che è obsoleta e non deve essere utilizzata per le nuove applicazioni.
Per informazioni sull'API di basso livello corrente, consulta la Amazon DynamoDB API Reference.
Descrizione
Modifica gli attributi di un elemento esistente. È possibile eseguire un aggiornamento condizionale (inserire una nuova coppia nome-valore attributo se non esiste o sostituire una coppia nome-valore esistente se ha determinati valori di attributo previsti).
Nota
Non è possibile aggiornare gli attributi della chiave primaria utilizzando UpdateItem. Eliminate invece l'elemento e PutItem utilizzatelo per creare un nuovo elemento con nuovi attributi.
L' UpdateItem operazione include un Action
parametro che definisce come eseguire l'aggiornamento. È possibile inserire, eliminare o aggiungere valori di attributo.
I valori degli attributi non possono essere nulli; gli attributi stringa e di tipo binario devono avere lunghezze maggiori di zero e gli attributi di tipo impostato non devono essere vuoti. Le richieste con valori vuoti verranno rifiutate con una eccezione ValidationException
.
Se un elemento esistente ha una chiave primaria specificata:
PUT: aggiunge l'attributo specificato. Se l'attributo esiste, viene sostituito dal nuovo valore.
DELETE: se non viene specificato alcun valore, rimuove l'attributo e il relativo valore. Se viene specificato un set di valori, i valori nel set specificato vengono rimossi dal set precedente. Quindi, se il valore dell'attributo contiene [a, b, c] e l'azione di eliminazione contiene [a, c], il valore dell'attributo finale sarà [b]. Il tipo di valore specificato deve corrispondere al tipo di valore esistente. La specifica di un set vuoto non è consentita.
ADD: utilizzare l'azione di aggiunta solo per i numeri o se l'attributo di destinazione è un set (inclusi i set di stringhe). ADD non funziona se l'attributo di destinazione è un singolo valore stringa o un valore binario scalare. Il valore specificato viene aggiunto a un valore numerico (incrementando o diminuendo il valore numerico esistente) o aggiunto come valore aggiuntivo in un set di stringhe. Se viene specificato un set di valori, i valori vengono aggiunti al set esistente. Ad esempio, se il set originale è [1,2] e il valore fornito è [3], dopo l'operazione di aggiunta l'insieme sarà [1,2,3] e non [4,5]. Se viene specificata un'operazione ADD per un attributo set e il tipo di attributo specificato non corrisponde al tipo di set esistente, si verifica un errore.
Se si utilizza ADD per un attributo che non esiste, l'attributo e i relativi valori verranno aggiunti all'elemento.
Se nessun elemento corrisponde alla chiave primaria specificata:
PUT: crea un nuovo elemento con la chiave primaria specificata. Quindi aggiunge l'attributo specificato.
DELETE: non succede nulla.
ADD: viene creato un elemento con la chiave primaria e il numero (o insieme di numeri) forniti per il valore dell'attributo. Non valido per un tipo stringa o binario.
Nota
Se si utilizza ADD
per aumentare o diminuire un valore numerico per un elemento che non esiste prima dell'aggiornamento, DynamoDB utilizzerà 0
come valore iniziale. Inoltre, se si aggiorna un elemento tramite ADD
per aumentare o diminuire un valore numerico per un attributo che non esiste prima dell'aggiornamento, DynamoDB utilizzerà 0
come valore iniziale. Ad esempio, si supponga di utilizzare ADD
per aggiungere +3
a un attributo che non esisteva prima dell'aggiornamento. DynamoDB utilizzerà 0
come valore iniziale e il valore dopo l'aggiornamento sarà 3
.
Per ulteriori informazioni sull'utilizzo di questa operazione, consulta Utilizzo di elementi e attributi in DynamoDB.
Richieste
Sintassi
// This header is abbreviated. // For a sample of a complete header, see DynamoDB di basso livello API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"Table1", "Key": {"HashKeyElement":{"S":"AttributeValue1"}, "RangeKeyElement":{"N":"AttributeValue2"}}, "AttributeUpdates":{"AttributeName3":{"Value":{"S":"AttributeValue3_New"},"Action":"PUT"}}, "Expected":{"AttributeName3":{"Value":{"S":"AttributeValue3_Current"}}}, "ReturnValues":"ReturnValuesConstant" }
Nome | Descrizione | Richiesto |
---|---|---|
TableName
|
Il nome della tabella che contiene l'elemento da aggiornare. ▬Tipo: stringa |
Sì |
Key
|
La chiave primaria che definisce l'elemento. Per ulteriori informazioni sulle chiavi primarie, vedere Chiave primaria. Tipo: mappa di |
Sì |
AttributeUpdates |
Mappa del nome dell'attributo al nuovo valore e operazione per l'aggiornamento. I nomi degli attributi specificano gli attributi da modificare e non possono contenere attributi di chiave primaria. Tipo: mappa del nome dell'attributo, del valore e dell'operazione per l'aggiornamento dell'attributo. |
|
AttributeUpdates :Action |
Specifica come eseguire l'aggiornamento. Valori possibili ▬Tipo: stringa Impostazione predefinita: |
No |
Expected
|
Designa un attributo per un aggiornamento condizionale. Il parametro Tipo: mappa dei nomi degli attributi. |
No |
Expected:AttributeName
|
Il nome dell'attributo per il put condizionale. ▬Tipo: stringa |
No |
Expected:AttributeName: ExpectedAttributeValue |
Utilizza questo parametro per specificare se esiste già un valore per la coppia nome-valore dell'attributo. La seguente notazione JSON aggiorna l'elemento se l'attributo "Colore" non esiste già per quell'elemento:
La seguente notazione JSON controlla se l'attributo con nome "Colore" ha un valore esistente pari a "Giallo" prima di aggiornare l'elemento:
Per impostazione predefinita, se si utilizza il parametro
NotaSe si specifica |
No |
ReturnValues
|
Utilizza questo parametro se desideri ottenere le coppie nome-valore dell'attributo prima che vengano aggiornate con la richiesta ▬Tipo: stringa |
No |
Risposte
Sintassi
Nella sintassi di esempio seguente si presuppone che la richiesta abbia specificato un parametro ReturnValues
di ALL_OLD
; in caso contrario, la risposta ha solo l'elemento ConsumedCapacityUnits
.
HTTP/1.1 200 x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 140 {"Attributes":{ "AttributeName1":{"S":"AttributeValue1"}, "AttributeName2":{"S":"AttributeValue2"}, "AttributeName3":{"S":"AttributeValue3"}, "AttributeName5":{"B":"dmFsdWU="} }, "ConsumedCapacityUnits":1 }
Nome | Descrizione |
---|---|
Attributes
|
Una mappa di coppie nome-valore attributo, ma solo se il parametro Tipo: mappa di coppie nome-valore dell'attributo. |
ConsumedCapacityUnits |
Il numero di unità di capacità di scrittura utilizzate dall'operazione. Questo valore mostra il numero applicato alla velocità effettiva assegnata. Per ulteriori informazioni, consulta Modalità di capacità fornita da DynamoDB. Tipo: numero |
Errori speciali
Errore | Descrizione |
---|---|
ConditionalCheckFailedException
|
Controllo condizionale non riuscito. Il valore dell'attributo ("+ name +") è ("+ value +") ma era previsto ("+ expValue +") |
ResourceNotFoundExceptions
|
L'elemento o l'attributo specificati non sono stati trovati. |
Esempi
Per esempi di utilizzo dell' AWS SDK, consulta. Utilizzo di elementi e attributi in DynamoDB
Richiesta di esempio
// This header is abbreviated. For a sample of a complete header, see DynamoDB di basso livello API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"comp5", "Key": {"HashKeyElement":{"S":"Julie"},"RangeKeyElement":{"N":"1307654350"}}, "AttributeUpdates": {"status":{"Value":{"S":"online"}, "Action":"PUT"}}, "Expected":{"status":{"Value":{"S":"offline"}}}, "ReturnValues":"ALL_NEW" }
Risposta di esempio
HTTP/1.1 200 OK x-amzn-RequestId: 5IMHO7F01Q9P7Q6QMKMMI3R3QRVV4KQNSO5AEMVJF66Q9ASUAAJG content-type: application/x-amz-json-1.0 content-length: 121 Date: Fri, 26 Aug 2011 21:05:00 GMT {"Attributes": {"friends":{"SS":["Lynda, Aaron"]}, "status":{"S":"online"}, "time":{"N":"1307654350"}, "user":{"S":"Julie"}}, "ConsumedCapacityUnits":1 }