

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Expected (warisan)
<a name="LegacyConditionalParameters.Expected"></a>

**catatan**  
Kami menyarankan agar Anda menggunakan parameter ekspresi yang baru, bukan parameter warisan ini, jika memungkinkan. Untuk informasi selengkapnya, lihat [Menggunakan ekspresi di DynamoDB](Expressions.md). Untuk informasi spesifik tentang parameter baru sebagai pengganti untuk yang satu ini, [gunakan *ConditionExpression*sebagai gantinya.](#Expected.instead). 

Parameter bersyarat lama `Expected` adalah blok bersyarat untuk operasi. `UpdateItem` `Expected`adalah peta attribute/condition pasangan. Setiap elemen peta terdiri dari nama atribut, operator perbandingan, dan satu atau beberapa nilai. DynamoDB membandingkan atribut dengan nilai(-nilai) yang Anda berikan, menggunakan operator perbandingan. Untuk setiap elemen `Expected`, hasil evaluasi adalah true atau false.

Jika Anda menentukan lebih dari satu elemen dalam peta `Expected`, secara default semua syarat harus bernilai true. Dengan kata lain, kondisi digabungkan menggunakan `AND` operator. (Anda dapat menggunakan parameter `ConditionalOperator` untuk syarat OR sebagai gantinya. Jika Anda melakukan ini, setidaknya salah satu syarat harus bernilai true, bukan semuanya.)

Jika peta `Expected` bernilai true, operasi bersyarat berhasil; jika tidak, gagal.

 `Expected` berisi hal berikut ini:
+  `AttributeValueList` - Satu atau beberapa nilai untuk mengevaluasi atribut yang disediakan. Jumlah nilai dalam daftar tergantung pada `ComparisonOperator` yang sedang digunakan.

  Untuk jenis Angka, perbandingan nilainya bersifat numerik.

  Perbandingan nilai string untuk lebih besar dari, sama dengan, atau kurang dari didasarkan pada Unicode dengan UTF-8 encoding biner. Sebagai contoh, `a` lebih besar dari `A`, dan `a` lebih besar dari `B`.

  Untuk jenis Biner, DynamoDB memperlakukan setiap byte data biner sebagai tidak bertanda ketika membandingkan nilai-nilai biner.
+  `ComparisonOperator` - Sebuah pembanding untuk mengevaluasi atribut dalam `AttributeValueList`. Saat melakukan perbandingan, DynamoDB menggunakan bacaan sangat konsisten.

  Operator perbandingan berikut ini tersedia:

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

  Berikut adalah deskripsi setiap operator perbandingan.
  +  `EQ`: Sama dengan. `EQ` didukung untuk semua jenis data, termasuk daftar dan peta.

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sama dengan `{"NS":["6", "2", "1"]}`.
  +  `NE`: Tidak sama dengan. `NE` didukung untuk semua set data, termasuk daftar dan peta.

     `AttributeValueList` hanya dapat berisi satu `AttributeValue` berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sama dengan `{"NS":["6", "2", "1"]}`.
  +  `LE`: Kurang dari atau sama dengan. 

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sebanding dengan `{"NS":["6", "2", "1"]}`.
  +  `LT`: Kurang dari. 

     `AttributeValueList` hanya dapat berisi satu `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sebanding dengan `{"NS":["6", "2", "1"]}`.
  +  `GE`: Lebih besar dari atau sama dengan. 

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sebanding dengan `{"NS":["6", "2", "1"]}`.
  +  `GT`: Lebih besar dari. 

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh, `{"S":"6"}` tidak sama dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sebanding dengan `{"NS":["6", "2", "1"]}`.
  +  `NOT_NULL`: Atribut ada. `NOT_NULL` didukung untuk semua jenis data, termasuk daftar dan peta.
**catatan**  
Operator ini menguji keberadaan atribut, bukan jenis datanya. Jika jenis data atribut "`a`" adalah nol, dan Anda mengevaluasinya menggunakan `NOT_NULL`, hasilnya adalah Boolean `true`. Hasil ini karena atribut "`a`" ada; jenis data tidak relevan dengan operator perbandingan `NOT_NULL`.
  +  `NULL`: Atribut tidak ada. `NULL` didukung untuk semua jenis data, termasuk daftar dan peta.
**catatan**  
Operator ini menguji tidak adanya atribut, bukan jenis datanya. Jika jenis data atribut "`a`" adalah nol, dan Anda mengevaluasinya menggunakan `NULL`, hasilnya adalah Boolean `false`. Hasil ini karena atribut "`a`" ada; jenis datanya tidak relevan dengan operator perbandingan `NULL`.
  +  `CONTAINS`: Memeriksa urutan berikutnya, atau nilai dalam suatu set.

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika atribut target perbandingan berjenis String, operator memeriksa kecocokan substring. Jika atribut target perbandingan berjenis Biner, operator mencari urutan berikutnya dari target yang cocok dengan input. Jika atribut target perbandingan adalah suatu set ("`SS`", "`NS`", atau "`BS`"), operator bernilai true jika menemukan kecocokan sama persis dengan anggota set tersebut.

    CONTAINS didukung untuk daftar: Saat mengevaluasi "`a CONTAINS b`", "`a`" dapat berupa sebuah daftar; tetapi, "`b`" tidak dapat berupa set, peta, atau daftar.
  +  `NOT_CONTAINS`: Memeriksa tidak adanya urutan berikutnya, atau tidak adanya nilai dalam suatu set.

     `AttributeValueList` hanya dapat berisi satu elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Jika atribut target perbandingan adalah String, operator memeriksa tidak adanya kecocokan substring. Jika atribut target perbandingan adalah Biner, operator mencari tidak adanya urutan berikutnya dari target yang cocok dengan input. Jika atribut target perbandingan adalah suatu set ("`SS`", "`NS`", atau "`BS`"), operator bernilai true jika `does not` menemukan kecocokan sama persis dengan anggota set tersebut.

    NOT\$1CONTAINS didukung untuk daftar: Saat mengevaluasi "`a NOT CONTAINS b`", "`a`" dapat berupa sebuah daftar; tetapi, "`b`" tidak dapat berupa set, peta, atau daftar.
  +  `BEGINS_WITH`: Memeriksa prefiks. 

     `AttributeValueList` hanya dapat berisi satu `AttributeValue` berjenis String atau Biner (bukan jenis Angka atau set). Atribut target perbandingan harus berjenis String atau Biner (bukan jenis Angka atau set).
  +  `IN`: Memeriksa elemen yang cocok dalam dua set.

     `AttributeValueList` dapat berisi satu atau beberapa elemen `AttributeValue` berjenis String, Angka, atau Biner (bukan jenis set). Atribut ini dibandingkan dengan atribut jenis set yang ada dari suatu item. Jika elemen apa pun dari set input ada dalam atribut item, ekspresi bernilai true.
  +  `BETWEEN`: Lebih besar dari atau sama dengan nilai pertama, dan kurang dari atau sama dengan nilai kedua. 

     `AttributeValueList` harus berisi dua elemen `AttributeValue` berjenis yang sama, baik String, Angka, atau Biner (bukan jenis set). Suatu atribut target cocok jika nilai target lebih besar dari, atau sama dengan, elemen pertama dan kurang dari, atau sama dengan, elemen kedua. Jika item berisi elemen `AttributeValue` dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Misalnya, `{"S":"6"}` tidak sebanding dengan `{"N":"6"}`. Selain itu, `{"N":"6"}` tidak sebanding dengan `{"NS":["6", "2", "1"]}` 

Parameter berikut dapat digunakan sebagai pengganti `AttributeValueList` dan `ComparisonOperator`:
+  `Value` - Nilai untuk DynamoDB guna membandingkan dengan atribut.
+  `Exists` - Nilai Boolean yang menyebabkan DynamoDB mengevaluasi nilai sebelum mencoba operasi bersyarat:
  + Jika `Exists` adalah `true`, DynamoDB akan memeriksa untuk melihat apakah nilai atribut sudah ada dalam tabel. Jika ditemukan, syarat bernilai true; jika tidak, syarat akan bernilai false.
  + Jika `Exists` adalah `false`, DynamoDB mengasumsikan bahwa nilai atribut `not` ada dalam tabel. Jika pada dasarnya nilai tidak ada, asumsi tersebut valid dan syarat bernilai true. Jika nilai ditemukan, terlepas dari asumsi bahwa nilai itu tidak ada, syaratnya bernilai false.

  Perhatikan bahwa nilai default untuk `Exists` adalah `true`.

Parameter `Value` dan `Exists` tidak kompatibel dengan `AttributeValueList` dan `ComparisonOperator`. Perhatikan bahwa jika Anda menggunakan kedua set parameter sekaligus, DynamoDB akan mengembalikan pengecualian `ValidationException`.

**catatan**  
Parameter ini tidak mendukung atribut jenis Daftar atau Peta.

## Gunakan *ConditionExpression*sebagai gantinya - Contoh
<a name="Expected.instead"></a>

Misalkan Anda ingin memodifikasi item dalam tabel *Musik*, tetapi hanya jika syarat tertentu bernilai true. Anda dapat menggunakan `UpdateItem` permintaan dengan `Expected` parameter, seperti dalam AWS CLI contoh ini:

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

Anda dapat menggunakan `ConditionExpression` sebagai gantinya:

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