AttributeUpdates (eredità) - Amazon DynamoDB

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à.

AttributeUpdates (eredità)

Nota

Consigliamo di utilizzare i nuovi parametri di espressione piuttosto che i parametri precedenti, se possibile. Per ulteriori informazioni, consulta Utilizzo di espressioni in DynamoDB. Per informazioni specifiche sul nuovo parametro che sostituisce questo, consulta usa UpdateExpressioninvece..

In un'operazione UpdateItem, parametro condizionale legacy AttributeUpdates contiene i nomi degli attributi da modificare, l'operazione da eseguire su ognuno di essi e il nuovo valore per ciascuno. Se si sta aggiornando un attributo che è un attributo chiave di indice per qualsiasi indice in tale tabella, il tipo di attributo deve corrispondere al tipo di chiave di indice definito in AttributesDefinition della descrizione della tabella. È possibile utilizzare UpdateItem per aggiornare eventuali attributi non chiave.

I valori degli attributi non possono essere nulli. Gli attributi di tipo String e Binary devono avere lunghezze maggiori di zero. Gli attributi di tipo Set non devono essere vuoti. Le richieste con valori vuoti verranno rifiutate con una eccezione ValidationException.

Ogni elemento AttributeUpdates è costituito da un nome di attributo da modificare, insieme a quanto segue:

  • Value: il nuovo valore, se applicabile, per questo attributo.

  • Action: un valore che specifica come eseguire l'aggiornamento. Questa operazione è valida solo per un attributo esistente il cui tipo di dati è Number o Set; non utilizzare ADD per altri tipi di dati.

    Se nella tabella viene trovato un elemento con la chiave primaria specificata, i valori seguenti eseguono le operazioni riportate:

    • PUT: aggiunge l'attributo specificato all'elemento. Se l'attributo esiste già, viene sostituito dal nuovo valore.

    • DELETE: rimuove l'attributo e il relativo valore se non viene specificato alcun valore per DELETE. Il tipo di dati per il valore specificato deve corrispondere al tipo di dati del valore esistente.

      Se viene specificato un set di valori, tali valori saranno sottratti dal vecchio set. Ad esempio, se il valore dell'attributo era il set [a,b,c] e l'operazione DELETE specifica [a,c], il valore dell'attributo finale sarà [b]. La specifica di un set vuoto restituisce un errore.

    • ADD: aggiunge il valore specificato all'elemento, se l'attributo non esiste già. Se l'attributo esiste, il comportamento di ADD dipende dal tipo di dati dell'attributo:

      • Se l'attributo è un numero e anche Value è un numero, allora Value viene aggiunto matematicamente all'attributo esistente. Se Value è un numero negativo, viene sottratto dall'attributo esistente.

        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.

        Allo stesso modo, se si utilizza ADD per un elemento esistente per aumentare o diminuire un valore di attributo che non esiste prima dell'aggiornamento, DynamoDB utilizzerà 0 come valore iniziale. Si supponga, ad esempio, che l'elemento che desideri aggiornare non abbia un attributo denominato itemcount, ma decidi comunque di ADD il numero 3 a questo attributo. DynamoDB creerà l'attributo itemcount, imposterà il suo valore iniziale su 0 e infine aggiungerà 3 ad esso. Il risultato sarà un nuovo attributo itemcount, con un valore 3.

      • Se il tipo di dati esistente è un set e se anche Value è un set, allora Value viene aggiunto al set esistente. Ad esempio, se il valore dell'attributo è il set [1,2] e l'operazione ADD specifica [3], il valore dell'attributo finale sarà [1,2,3]. 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.

        Entrambi i set devono avere lo stesso tipo di dati primitivi. Ad esempio, se il tipo di dati esistente è un set di stringhe, anche Value deve essere un set di stringhe.

    Se nella tabella non viene trovato alcun elemento con la chiave specificata, i valori seguenti completano le operazioni riportate:

    • PUT: consente a DynamoDB di creare un nuovo elemento con la chiave primaria specificata e quindi aggiunge l'attributo.

    • DELETE: non succede nulla, perché gli attributi non possono essere eliminati da un elemento inesistente. L'operazione ha esito positivo, ma DynamoDB non crea un nuovo elemento.

    • ADD: fa in modo che DynamoDB crei un elemento con la chiave primaria fornita e il numero (o set di numeri) per il valore dell'attributo. Gli unici tipi di dati consentiti sono Number e Number Set.

Se si forniscono attributi che fanno parte di una chiave di indice, i tipi di dati per tali attributi devono corrispondere a quelli dello schema nella definizione dell'attributo della tabella.

Usa UpdateExpressioninvece: Esempio

Si supponga di voler modificare un elemento nella tabella Music. Puoi usare una UpdateItem richiesta con un AttributeUpdates parametro, come in questo AWS CLI esempio:

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --attribute-updates '{ "Genre": { "Action": "PUT", "Value": {"S":"Rock"} } }'

Puoi invece utilizzare UpdateExpression:

aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --update-expression 'SET Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'

Per ulteriori informazioni sull'aggiornamento degli attributi consulta Aggiornamento di un elemento in una tabella DynamoDB.