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à.
Importante
This section refers to API version 2011-12-05,
which is deprecated and should not be used for new
applications.
Per la documentazione sull'attuale livello bassoAPI, consulta Amazon DynamoDB Reference API.
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, l'attributo e il relativo valore vengono rimossi. 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— Utilizzate l'azione di aggiunta solo per i numeri o se l'attributo target è un set (compresi i set di stringhe). ADDnon funziona se l'attributo target è un valore di stringa singolo 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 vengono 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— Crea un elemento con la chiave primaria e il numero (o set 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 JSON notazione aggiorna l'elemento se l'attributo «Colore» non esiste già per quell'elemento:
La seguente JSON notazione verifica se l'attributo con nome «Colore» ha un valore esistente di «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 di AWS SDK, vedereUtilizzo 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
}