

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.

# UpdateItem
<a name="API_UpdateItem_v20111205"></a>

**Wichtig**  
***Dieser Abschnitt bezieht sich auf die veraltete API-Version 2011-12-05, die nicht für neue Anwendungen verwendet werden sollte.***  
 **Eine Dokumentation zur aktuellen Low-Level-API finden Sie in der [Amazon DynamoDB-API-Referenz](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/).**

## Beschreibung
<a name="API_UpdateItem_Description"></a>

Bearbeitet Attribute eines existierenden Elements. Sie können eine bedingte Aktualisierung durchführen (fügen Sie ein neues Attributnamen-Wert-Paar ein, wenn es noch nicht vorhanden ist, oder ersetzen Sie ein vorhandenes Namen-Wert-Paar, wenn es über bestimmte zu erwartende Attributwerte verfügt).

**Anmerkung**  
Sie können die Primärschlüsselattribute mit UpdateItem nicht aktualisieren. Löschen Sie stattdessen das Element und verwenden Sie PutItem zum Erstellen eines neuen Elements mit neuen Attributen.

Die UpdateItem-Operation enthält den Parameter `Action`, der festlegt, wie die Aktualisierung durchgeführt wird. Sie können Attributwerte hinzufügen, löschen oder setzen. 

Attributwerte dürfen nicht Null sein, Zeichenketten- und Binärtypattribute müssen Längen haben, die größer als Null sind, und festgelegte Typattribute dürfen nicht leer sein. Anfragen mit leeren Werten werden mit einer `ValidationException` abgelehnt.

Wenn ein vorhandenes Element über den angegebenen Primärschlüssel verfügt: 
+ **PUT –** Fügt das angegebene Attribut hinzu. Wenn das Attribut vorhanden ist, wird es durch den neuen Wert ersetzt. 
+ **DELETE –** Ist kein Wert angegeben, wird dadurch das Attribut und sein Wert entfernt. Wenn eine Menge von Werten angegeben wird, werden die Werte in dem angegebenen Satz aus dem alten Satz entfernt. Wenn also der Attributwert [a,b,c] und die Löschaktion [a,c] enthält, dann ist der tatsächliche Attributwert [b]. Der Typ des angegebenen Werts muss dem vorhandenen Werttyp entsprechen. Einen leeren Satz anzugeben ist nicht gültig.
+ **ADD –** Verwendung der Add-Aktion nur für Zahlen oder wenn das Zielattribut ein Satz ist (einschließlich Zeichenkettensätze). ADD funktioniert nicht, falls das Zielattribut ein einzelner Zeichenkettenwert oder ein skalarer Binärwert ist. Der angegebene Wert wird einem numerischen Wert hinzugefügt (Erhöhen oder Verringern des vorhandenen numerischen Werts) oder als zusätzlichen Wert in einem Zeichenkettensatz hinzugefügt. Wenn ein Menge von Werten angegeben wird, werden die Werte dem vorhandenen Satz hinzugefügt. Zum Beispiel, wenn der ursprüngliche Satz [1,2] ist und der bereitgestellte Wert [3] ist, dann ist der Satz nach dem Add-Vorgang [1,2,3] und nicht [4,5]. Ein Fehler tritt auf, wenn eine Add-Aktion für ein festgelegtes Attribut angegeben wird und der angegebene Attributtyp nicht mit dem vorhandenen festgelegten Typ übereinstimmt. 

  Wenn Sie ADD für ein Attribut verwenden, das nicht existiert, wird das Attribut und seine Werte dem Element hinzugefügt.

Wenn kein Element mit dem angegebenen Primärschlüssel übereinstimmt: 
+ **PUT –** Erstellt ein neues Element mit dem angegebenen Primärschlüssel. Fügt dann das angegebene Attribut hinzu. 
+ **DELETE –** Nichts passiert. 
+ **ADD –** Erstellt ein Element mit einem bereitgestellten Primärschlüssel und einer Zahl (oder eine Menge von Zahlen) für den Attributwert. Nicht gültig für einen Zeichenkette- oder Binärtyp. 

**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 außerdem ein Element aktualisieren, indem Sie `ADD` verwenden, um einen Zahlenwert für ein Attribut zu erhöhen oder zu verringern, das vor der Aktualisierung nicht vorhanden ist (das Element ist jedoch vorhanden), verwendet DynamoDB die `0` als Anfangswert. Beispiel: Sie verwenden `ADD`, um `+3` einem Attribut hinzuzufügen, das vor der Aktualisierung nicht vorhanden war. DynamoDB verwendet `0` für den ersten Wert und der Wert nach der Aktualisierung ist `3`. 

Weitere Informationen zur Verwendung dieser Operation finden Sie unter [Arbeiten mit Elementen und Attributen in DynamoDB](WorkingWithItems.md). 

## Anforderungen
<a name="API_UpdateItem_RequestParameters"></a>

### Syntax
<a name="API_UpdateItem_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB Low-Level-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"
}
```


****  

|  Name  |  Beschreibung  |  Erforderlich | 
| --- | --- | --- | 
|  TableName  |  Der Name der Tabelle, die das zu aktualisierende Element enthält.  **Typ:** Zeichenfolge  |  Ja  | 
|  Key  | Der Primärschlüssel, der das Element definiert. Weitere Informationen zu Primärschlüsseln finden Sie unter [Primärschlüssel](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey).Typ: Zuordnung von `HashKeyElement` zu seinem Wert und von `RangeKeyElement` zu seinem Wert. | Ja | 
| AttributeUpdates | Zuordnung des Attributnamens zu dem neuen Wert und der neuen Aktion für die Aktualisierung. Die Attributnamen legen die zu ändernden Attribute fest und können keine Primärschlüsselattribute enthalten.Typ: Zuordnung eines Attributnamens, eines Werts und einer Aktion für die Aktualisierung des Attributs. |  | 
| AttributeUpdates:Action | Gibt an, wie die Aktualisierung durchzuführen ist. Mögliche Werte: `PUT` (Standard) `ADD` oder `DELETE`. Die Semantiken finden Sie in der UpdateItem-Beschreibung.**Typ:** ZeichenfolgeStandard: `PUT` | Nein | 
| Expected  | Gibt ein Attribut für eine bedingte Aktualisierung an. Der Parameter `Expected` erlaubt es Ihnen, einen Attributnamen anzugeben und festzulegen, ob DynamoDB überprüfen soll, ob der Attributwert bereits vorhanden ist bzw. ob der Attributwert vorhanden ist und über einen bestimmten Wert verfügt, bevor er geändert wird.Typ: Zuordnung von Attributnamen. | Nein | 
| Expected:AttributeName  | Der Name des Attributs für die bedingte Put-Operation.**Typ:** Zeichenfolge | Nein | 
| Expected:AttributeName: ExpectedAttributeValue | Verwenden Sie diesen Parameter, um anzugeben, ob ein Wert für das Attributname-Wert-Paar bereits vorhanden ist oder nicht. Die folgende JSON-Notation aktualisiert das Element, wenn das Attribut "Farbe" für dieses Element noch nicht vorhanden ist:<pre>"Expected" :<br />	{"Color":{"Exists":false}}</pre>Die folgende JSON-Notation prüft, ob das Attribut mit dem Namen "Farbe" über einen vorhandenen Wert für "Gelb" verfügt, bevor sie das Element aktualisiert: <pre>"Expected" : <br />	{"Color":{"Exists":true},{"Value":{"S":"Yellow"}}}</pre>Wenn Sie den Parameter `Expected` verwenden und einen `Value` angeben, geht DynamoDB standardmäßig davon aus, dass das Attribut vorhanden ist und einen zu ersetzenden aktuellen Wert hat. Sie müssen `{"Exists":true}` demnach nicht angeben, weil er enthalten ist. Sie können die Anforderung verkürzen, um:<pre>"Expected" : <br />	{"Color":{"Value":{"S":"Yellow"}}}</pre> Wenn Sie `{"Exists":true}` ohne einen zu prüfenden Attributwert angeben, gibt DynamoDB einen Fehler zurück.  | Nein | 
| ReturnValues  | Verwenden Sie diesen Parameter, wenn Sie die Attribut-Namen-Wert-Paare erhalten möchten, bevor sie mit der `UpdateItem`-Anforderung aktualisiert wurden. Mögliche Parameterwerte sind `NONE` (Standard) oder `ALL_OLD`, `UPDATED_OLD`, `ALL_NEW` oder `UPDATED_NEW`. Wenn `ALL_OLD` angegeben ist und ein Attribut-Namen-Wert-Paar durch `UpdateItem` überschrieben wurde, wird der Inhalt des alten Elements zurückgegeben. Wenn dieser Parameter nicht angegeben wird oder `NONE` ist, wird nichts zurückgegeben. Wenn `ALL_NEW` angegeben wird, werden alle Attribute der neuen Version des Elements zurückgegeben. Wenn `UPDATED_NEW` angegeben wird, werden ausschließlich die neuen Versionen der aktualisierten Attribute zurückgegeben.**Typ:** Zeichenfolge | Nein | 

## Antworten
<a name="API_UpdateItem_CommonResponseElements"></a>

### Syntax
<a name="API_UpdateItem_CommonResponseElements.syntax"></a>

In dem folgenden Syntax-Beispiel wird davon ausgegangen, dass die Anforderung für den Parameter `ReturnValues` `ALL_OLD` angegeben hat; andernfalls beinhaltet die Antwort nur das `ConsumedCapacityUnits`-Element.

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


****  

|  Name  |  Beschreibung  | 
| --- | --- | 
|  Attributes  | Eine Zuordnung von Attribut-Namen-Wert-Paaren, aber nur, wenn der Parameter `ReturnValues` in der Anforderung anders angegeben wird als `NONE`.Typ: Zuordnung von Attribut-Namen-Wert-Paare. | 
| ConsumedCapacityUnits | Die Anzahl der Schreibkapazitätseinheiten, die von dem Vorgang verbraucht werden. Dieser Wert zeigt die Anzahl, die für Ihren bereitgestellten Durchsatz gültig ist. Weitere Informationen finden Sie unter [DynamoDB – Modus mit bereitgestellter Kapazität](provisioned-capacity-mode.md). Typ: Zahl | 

## Spezielle Fehler
<a name="API_UpdateItem_SpecialErrors"></a>


****  

|  Fehler  |  Beschreibung  | 
| --- | --- | 
|  ConditionalCheckFailedException  | Bedingte Prüfung fehlgeschlagen. Der Attributwert ("\$1 name \$1") ist ("\$1 value \$1"), aber ("\$1 expValue \$1") wurde erwartet  | 
| ResourceNotFoundExceptions  | Das angegebene Element oder Attribut wurde nicht gefunden. | 

## Beispiele
<a name="API_UpdateItem_Examples"></a>

Beispiele für die Verwendung des AWS SDK finden Sie unter [Arbeiten mit Elementen und Attributen in DynamoDB](WorkingWithItems.md).

### Beispielanforderung
<a name="API_UpdateItem_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB Low-Level-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"
}
```

### Beispielantwort
<a name="API_UpdateItem_Examples_Response"></a>

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

## Zugehörige Aktionen
<a name="API_UpdateItem_Related_Actions"></a>
+  [PutItem](API_PutItem_v20111205.md) 
+  [DeleteItem](API_DeleteItem_v20111205.md) 