

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.

# Expected (veraltet)
<a name="LegacyConditionalParameters.Expected"></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 [*ConditionExpression*stattdessen verwenden.](#Expected.instead). 

Der ältere bedingte Parameter `Expected` ist ein bedingter Block für eine `UpdateItem` Operation. `Expected`ist eine Karte von attribute/condition Paaren. Jedes Element des Mappings besteht aus einem Attributnamen, einem Vergleichsoperator und mindestens einem Wert. DynamoDB vergleicht das Attribut anhand des Vergleichsoperators mit dem bzw. den angegebenen Werten. Für jedes `Expected`-Element lautet das Ergebnis der Auswertung entweder True oder False.

Wenn Sie mehr als ein Element im `Expected`-Mapping angeben, müssen alle Bedingungen standardmäßig mit True ausgewertet werden. Mit anderen Worten: Die Bedingungen werden mit dem `AND`-Operator kombiniert. (Sie können das`ConditionalOperator`-Parameter auf ODER zu den Bedingungen verwenden. In diesem Fall müssen nicht alle, sondern mindestens eine der Bedingungen mit True ausgewertet werden.)

Wenn die `Expected`-Zuordnung mit True ausgewertet wird, ist die bedingte Operation erfolgreich; andernfalls schlägt sie fehl.

 `Expected` enthält Folgendes:
+  `AttributeValueList` – Ein oder mehrere Werte, die anhand des angegebenen Attributs ausgewertet werden sollen. Die Anzahl der Werte in der Liste hängt vom verwendeten `ComparisonOperator` ab.

  Beim Zahlentyp sind Wertevergleiche numerisch.

  Vergleiche von Zeichenfolgenwerten für größer als, gleich oder kleiner als basieren auf Unicode mit UTF-8-Binärkodierung. Beispiel: `a` ist größer als `A` und `a` ist größer als `B`.

  Beim Binärtyp betrachtet DynamoDB jedes Byte der Binärdaten beim Vergleichen der binären Werte ohne Vorzeichen.
+  `ComparisonOperator` – Ein Vergleichsoperator zum Auswerten der Attribute in der `AttributeValueList`. Für den Vergleich verwendet DynamoDB Strongly Consistent-Lesevorgänge.

  Die folgenden Vergleichsoperatoren sind verfügbar:

   `EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN` 

  Es folgen Beschreibungen der einzelnen Vergleichsoperatoren.
  +  `EQ`: Gleich. `EQ` wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Zum Beispiel, `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch, `{"N":"6"}` ist nicht gleich `{"NS":["6", "2", "1"]}`.
  +  `NE`: Nicht gleich. `NE` wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.

     `AttributeValueList` kann nur ein `AttributeValue` vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element einen `AttributeValue` eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch, `{"N":"6"}` ist nicht gleich `{"NS":["6", "2", "1"]}`.
  +  `LE` : kleiner als oder gleich. 

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch, `{"N":"6"}` entspricht nicht `{"NS":["6", "2", "1"]}`.
  +  `LT` : kleiner als. 

     `AttributeValueList` kann nur ein `AttributeValue` vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch, `{"N":"6"}` entspricht nicht `{"NS":["6", "2", "1"]}`.
  +  `GE` : größer als oder gleich. 

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch entspricht `{"N":"6"}` nicht `{"NS":["6", "2", "1"]}`.
  +  `GT` : größer als. 

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` ist nicht gleich `{"N":"6"}`. Auch entspricht `{"N":"6"}` nicht `{"NS":["6", "2", "1"]}`.
  +  `NOT_NULL`: Das Attribut ist vorhanden. `NOT_NULL` wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.
**Anmerkung**  
Dieser Operator prüft das Vorhandensein eines Attributs, nicht seines Datentyps. Wenn der Datentyp des Attributs „`a`“ Null ist und Sie ihn mit `NOT_NULL` auswerten, ist das Ergebnis ein Boolescher Wert `true`. Dieses Ergebnis ist darauf zurückzuführen, dass das Attribut „`a`“ vorhanden ist. Sein Datentyp ist für den Vergleichsoperator `NOT_NULL` nicht relevant.
  +  `NULL`: Das Attribut ist nicht vorhanden. `NULL` wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.
**Anmerkung**  
Dieser Operator prüft das Nichtvorhandensein eines Attributs, nicht seines Datentyps. Wenn der Datentyp des Attributs „`a`“ Null ist und Sie ihn mit `NULL` auswerten, ist das Ergebnis ein Boolescher Wert `false`. Dies ist darauf zurückzuführen, dass das Attribut „`a`“ vorhanden ist. Sein Datentyp ist für den Vergleichsoperator `NULL` nicht relevant.
  +  `CONTAINS`: Prüft auf eine Teilsequenz oder einen Wert in einem Satz.

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn das Zielattribut des Vergleichs vom Typ Zeichenfolge ist, dann prüft der Operator, ob eine Teilzeichenfolge übereinstimmt. Wenn das Zielattribut des Vergleichs vom Typ Binärwert ist, sucht der Operator nach einer Teilsequenz des Ziels, die mit der Eingabe übereinstimmt. Wenn das Zielattribut des Vergleichs ein Satz ist („`SS`“, „`NS`“ oder „`BS`“), dann wertet der Operator die Prüfung mit True aus, wenn er eine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.

    CONTAINS wird für Listen unterstützt: Beim Auswerten von „`a CONTAINS b`“, kann „`a`“ eine Liste sein. Dagegen kann „`b`“ kein Satz, keine Zuordnung und keine Liste sein.
  +  `NOT_CONTAINS`: Prüft ein Element auf eine fehlende Teilsequenz oder einen fehlenden Wert in einem Satz.

     `AttributeValueList` kann nur ein `AttributeValue`-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn das Zielattribut des Vergleichs eine Zeichenfolge ist, dann prüft der Operator auf eine fehlende Übereinstimmung einer Teilzeichenfolge. Wenn das Zielattribut des Vergleichs vom Typ Binärwert ist, prüft der Operator, ob eine Teilsequenz des Ziels, die mit der Eingabe übereinstimmt, fehlt. Wenn das Zielattribut des Vergleichs ein Satz ist („`SS`“, „`NS`“ oder „`BS`“), dann wertet der Operator mit True aus, wenn er `does not` keine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.

    NOT\$1CONTAINS wird für Listen unterstützt: Beim Auswerten von „`a NOT CONTAINS b`“ kann „`a`“ eine Liste sein. Dagegen kann „`b`“ kein Satz, keine Zuordnung und keine Liste sein.
  +  `BEGINS_WITH` : Prüft auf ein Präfix. 

     `AttributeValueList` kann nur ein `AttributeValue` vom Typ Zeichenfolge oder Binärwert (keine Zahl oder Satztyp) sein. Das Zielattribut des Vergleichs muss vom Typ Zeichenfolge oder Binärwert sein (nicht Zahl oder Satz).
  +  `IN` : Überprüft, ob übereinstimmende Elemente in zwei Sätzen vorhanden sind.

     `AttributeValueList` kann nur ein oder mehrere `AttributeValue`-Elemente vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Diese Attribute werden mit einem vorhandenen Satztypattribut eines Elements verglichen. Wenn ein beliebiges Element des Eingabesatzes im Elementattribut vorhanden ist, wird der Ausdruck mit True ausgewertet.
  +  `BETWEEN` : Größer als oder gleich dem ersten Wert und kleiner als oder gleich dem zweiten Wert. 

     `AttributeValueList` muss zwei `AttributeValue`-Elemente desselben Typs enthalten, und zwar Zeichenfolge, Zahl oder Binärwert (kein Satztyp). Es kommt zu einer Übereinstimmung mit dem Zielattribut, wenn der Zielwert größer als oder gleich dem ersten Element und kleiner als oder gleich dem zweiten Element ist. Wenn ein Element ein `AttributeValue`-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel: `{"S":"6"}` stimmt nicht mit `{"N":"6"}` überein. Auch, `{"N":"6"}` entspricht nicht `{"NS":["6", "2", "1"]}`. 

Die folgenden Parameter können statt `AttributeValueList` und `ComparisonOperator` verwendet werden:
+  `Value` – Ein Wert für DynamoDB zum Vergleichen mit einem Attribut.
+  `Exists` – Ein Boolescher Wert, der DynamoDB veranlasst, den Wert auszuwerten, bevor die bedingte Operation ausgeführt wird:
  + Wenn `Exists` `true` ist, prüft DynamoDB, ob der Attributwert in der Tabelle bereits vorhanden ist. Falls gefunden, wird die Bedingung mit True ausgewertet, andernfalls mit False.
  + Wenn `Exists` `false` ist, geht DynamoDB davon aus, dass der Attributwert `not` in der Tabelle vorhanden ist. Wenn der Wert tatsächlich nicht vorhanden ist, ist die Annahme gültig und die Bedingung wird mit True ausgewertet. Wenn der Wert trotz der Annahme, dass er nicht vorhanden ist, gefunden wird, wird die Bedingung mit True ausgewertet.

  Der Standardwert für `Exists` ist `true`.

Die Parameter `Value` und `Exists` sind mit `AttributeValueList` und `ComparisonOperator` nicht kompatibel. Hinweis: Wenn Sie beide Parametersätze auf einmal verwenden, gibt DynamoDB eine `ValidationException`-Ausnahme zurück.

**Anmerkung**  
Dieser Parameter unterstützt keine Attribute vom Typ Liste oder Zuordnung.

## Verwenden Sie *ConditionExpression*stattdessen — Beispiel
<a name="Expected.instead"></a>

Angenommen, Sie möchten ein Element in der Tabelle *Music* ändern, jedoch nur, wenn eine bestimmte Bedingung True ist. Sie könnten eine `UpdateItem` Anfrage mit einem `Expected` Parameter verwenden, wie in diesem AWS CLI Beispiel:

```
aws dynamodb update-item \
    --table-name Music \
    --key '{
        "Artist": {"S":"No One You Know"},
        "SongTitle": {"S":"Call Me Today"} 
    }' \
    --attribute-updates '{
        "Price": {
            "Action": "PUT", 
            "Value": {"N":"1.98"}
        }
    }' \
    --expected '{
        "Price": {
            "ComparisonOperator": "LE", 
            "AttributeValueList": [ {"N":"2.00"} ]
        }
    }'
```

Sie können stattdessen `ConditionExpression` verwenden.

```
aws dynamodb update-item \
    --table-name Music \
    --key '{
        "Artist": {"S":"No One You Know"},
        "SongTitle": {"S":"Call Me Today"} 
    }' \
    --update-expression 'SET Price = :p1' \
    --condition-expression 'Price <= :p2' \
    --expression-attribute-values '{
        ":p1": {"N":"1.98"},
        ":p2": {"N":"2.00"}
    }'
```