

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AttributeUpdates (Vermächtnis)
<a name="LegacyConditionalParameters.AttributeUpdates"></a>

**Anmerkung**  
Es wird empfohlen, nach Möglichkeit die neuen Ausdrucksparameter anstelle der alten Parameter zu verwenden. Weitere Informationen finden Sie unter [Verwenden von Ausdrücken in DynamoDB](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*UpdateExpression*stattdessen verwenden.](#UpdateExpression.instead). 

In einer `UpdateItem`-Operation enthält der ältere Bedingungsparameter `AttributeUpdates` die Namen der zu ändernden Attribute, die für jedes Attribut auszuführende Aktion und den jeweils neuen Wert. Wenn Sie ein Attribut aktualisieren, bei dem es sich um ein Indexschlüsselattribut für Indexe dieser Tabelle handelt, muss der Attributtyp mit dem in der `AttributesDefinition` der Tabellenbeschreibung definierten Indexschlüsseltyp übereinstimmen. Mit `UpdateItem` können Sie Nicht-Schlüsselattribute aktualisieren.

Attributwerte dürfen nicht Null sein. Attribute vom Typ Zeichenfolge und Binärwert müssen Längen haben, die größer als Null sind. Attribute vom Typ Satz dürfen nicht leer sein. Anfragen mit leeren Werten werden mit einer `ValidationException`-Ausnahme abgelehnt.

Jedes `AttributeUpdates`-Element besteht aus einem zu ändernden Attributnamen zusammen mit Folgendem:
+  `Value` – Der neue Wert, falls zutreffend, für dieses Attribut.
+  `Action` – Ein Wert, der angibt, wie die Aktualisierung durchzuführen ist. Diese Aktion ist nur für ein vorhandenes Attribut gültig, dessen Datentyp Zahl ist, oder das ein Satz ist. Verwenden Sie `ADD` nicht für andere Datentypen. 

  Wenn ein Element mit dem angegebenen Primärschlüssel in der Tabelle gefunden wird, führen die folgenden Werte die nachstehenden Aktionen aus:
  +  `PUT` – Fügt dem Element das angegebene Attribut hinzu. Wenn das Attribut bereits vorhanden ist, wird es durch den neuen Wert ersetzt. 
  +  `DELETE` – Entfernt das Attribut und den Wert, wenn für `DELETE` kein Wert angegeben ist. Der Datentyp des angegebenen Werts muss dem Datentyp des vorhandenen Werts entsprechen.

    Wenn ein Satz von Werten angegeben wird, müssen diese Werte vom alten Satz abgezogen werden. Beispiel: Wenn der Attributwert der Satz `[a,b,c]` war und die `DELETE`-Aktion `[a,c]` angibt, ist der endgültige Attributwert `[b]`. Einen leeren Satz anzugeben, führt zu einem Fehler.
  +  `ADD` – Fügt dem Element den angegebenen Wert hinzu, wenn das Attribut nicht bereits vorhanden ist. Wenn das Attribut nicht vorhanden ist, hängt das Verhalten von `ADD` vom Datentyp des Attributs ab:
    + Wenn das vorhandene Attribut und `Value` jeweils eine Zahl ist, dann wird `Value` mathematisch zum vorhandenen Attribut addiert. Wenn `Value` eine negative Zahl ist, wird sie von dem vorhandenen Attribut abgezogen.
**Anmerkung**  
Wenn Sie `ADD` einsetzen, um einen Zahlenwert für ein Element, das vor der Aktualisierung nicht vorhanden ist, zu erhöhen oder zu verringern, verwendet DynamoDB 0 als Anfangswert.  
Wenn Sie `ADD` für ein vorhandenes Element nutzen, um einen Attributwert, der vor der Aktualisierung nicht vorhanden ist, zu erhöhen oder zu verringern, verwendet DynamoDB `0` als Anfangswert. Angenommen, das Element, das Sie aktualisieren möchten, hat kein Attribut mit dem Namen *itemcount*, aber Sie möchten trotzdem die Zahl `ADD` mit `3` zu diesem Attribut addieren. DynamoDB erstellt das *itemcount*-Attribut, legt den Anfangswert auf `0` fest und addiert `3`. Das Ergebnis ist ein neues *itemcount*-Attribut mit dem Wert `3`.
    + Wenn der vorhandene Datentyp ein Satz ist und `Value` ebenfalls ein Satz ist, dann wird `Value` dem vorhandenen Satz angefügt. Beispiel: Wenn der Attributwert der Satz `[1,2]` ist und die `ADD`-Aktion `[3]` angibt, ist der endgültige Attributwert `[1,2,3]`. Ein Fehler tritt auf, wenn eine `ADD`-Aktion für ein festgelegtes Attribut angegeben wird und der angegebene Attributtyp nicht mit dem vorhandenen Satztyp übereinstimmt. 

      Beide Sätze müssen denselben primitiven Datentyp besitzen. Wenn es sich bei dem vorhandenen Datentyp beispielsweise um einen Satz von Zeichenfolgen handelt, muss `Value` ebenfalls ein Zeichenfolgensatz sein.

  Wenn kein Element mit dem angegebenen Primärschlüssel in der Tabelle gefunden wird, führen die folgenden Werte die nachstehenden Aktionen aus:
  +  `PUT` – Veranlasst DynamoDB, ein neues Element mit dem angegebenen Primärschlüssel zu erstellen, und fügt dann das Attribut hinzu. 
  +  `DELETE` – Nichts passiert, da Attribute nicht aus einem nicht vorhandenen Element gelöscht werden können. Die Operation ist erfolgreich, aber DynamoDB erstellt kein neues Element.
  +  `ADD` – Veranlasst DynamoDB, ein Element mit dem bereitgestellten Primärschlüssel und einer Zahl (oder Zahlensätzen) für den Attributwert zu erstellen. Die einzigen zulässigen Datentypen sind Zahl und Zahlensatz.

Wenn Sie Attribute, die Teil eines Indexschlüssels sind, bereitstellen, müssen die Datentypen dieser Attribute mit den Typen des Schemas in der Attributdefinition der Tabelle übereinstimmen.

## *UpdateExpression*Stattdessen verwenden — Beispiel
<a name="UpdateExpression.instead"></a>

Angenommen, Sie möchten ein Element in der Tabelle *Music* ändern. Sie könnten eine `UpdateItem` Anfrage mit einem `AttributeUpdates` Parameter verwenden, wie in diesem AWS CLI Beispiel:

```
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"}
        }   
    }'
```

Sie können stattdessen `UpdateExpression` verwenden.

```
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"}
    }'
```