

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

# Ekspresi kondisi transaksi
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-transaction-condition-expressions"></a>

Ekspresi kondisi transaksi tersedia dalam template pemetaan permintaan dari keempat jenis operasi di`TransactWriteItems`, yaitu,,`PutItem`, `DeleteItem``UpdateItem`, dan`ConditionCheck`.

Untuk`PutItem`,`DeleteItem`, dan`UpdateItem`, ekspresi kondisi transaksi adalah opsional. Untuk`ConditionCheck`, ekspresi kondisi transaksi diperlukan.

## Contoh 1
<a name="id22"></a>

Dokumen `DeleteItem` pemetaan transaksional berikut tidak memiliki ekspresi kondisi. Akibatnya, ia menghapus item di DynamoDB.

```
{
   "version": "2018-05-29",
   "operation": "TransactWriteItems",
   "transactItems": [
      {
         "table": "posts",
         "operation": "DeleteItem",
         "key": {
            "id": { "S" : "1" }
         }
      }
   ]
}
```

## Contoh 2
<a name="id23"></a>

Dokumen `DeleteItem` pemetaan transaksional berikut memang memiliki ekspresi kondisi transaksi yang memungkinkan operasi berhasil hanya jika penulis posting itu sama dengan nama tertentu.

```
{
   "version": "2018-05-29",
   "operation": "TransactWriteItems",
   "transactItems": [
      {
         "table": "posts",
         "operation": "DeleteItem",
         "key": {
            "id": { "S" : "1" }
         }
         "condition": {
            "expression": "author = :author",
            "expressionValues": {
               ":author": { "S" : "Chunyan" }
            }
         }
      }
   ]
}
```

Jika pemeriksaan kondisi gagal, itu akan menyebabkan `TransactionCanceledException` dan detail kesalahan akan dikembalikan`$ctx.result.cancellationReasons`. Perhatikan bahwa secara default, item lama di DynamoDB yang membuat pemeriksaan kondisi gagal akan dikembalikan. `$ctx.result.cancellationReasons`

## Menentukan suatu kondisi
<a name="id24"></a>

Dokumen pemetaan `PutItem``UpdateItem`,, dan `DeleteItem` permintaan semuanya memungkinkan `condition` bagian opsional untuk ditentukan. Jika dihilangkan, tidak ada pemeriksaan kondisi yang dilakukan. Jika ditentukan, kondisi harus benar agar operasi berhasil. `ConditionCheck`Harus memiliki `condition` bagian yang akan ditentukan. Syaratnya harus benar agar seluruh transaksi berhasil.

`condition`Bagian memiliki struktur sebagai berikut:

```
"condition": {
    "expression": "someExpression",
    "expressionNames": {
        "#foo": "foo"
    },
    "expressionValues": {
        ":bar": ... typed value
    },
    "returnValuesOnConditionCheckFailure": false
}
```

Bidang berikut menentukan kondisi:

** `expression` **  
Ekspresi pembaruan itu sendiri. Untuk informasi selengkapnya tentang cara menulis ekspresi kondisi, lihat dokumentasi [DynamoDB ConditionExpressions ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html). Bidang ini harus ditentukan.

** `expressionNames` **  
Substitusi untuk placeholder nama atribut ekspresi, dalam bentuk pasangan kunci-nilai. Kunci sesuai dengan placeholder nama yang digunakan dalam *ekspresi*, dan nilainya harus berupa string yang sesuai dengan nama atribut item di DynamoDB. *Bidang ini bersifat opsional, dan seharusnya hanya diisi dengan substitusi untuk placeholder nama atribut ekspresi yang digunakan dalam ekspresi.*

** `expressionValues` **  
Substitusi untuk placeholder nilai atribut ekspresi, dalam bentuk pasangan kunci-nilai. Kunci sesuai dengan placeholder nilai yang digunakan dalam ekspresi, dan nilainya harus berupa nilai yang diketik. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Jenis Sistem (pemetaan permintaan). Ini harus ditentukan. Bidang ini bersifat opsional, dan seharusnya hanya diisi dengan substitusi untuk placeholder nilai atribut ekspresi yang digunakan dalam ekspresi.

** `returnValuesOnConditionCheckFailure` **  
Tentukan apakah akan mengambil item di DynamoDB kembali ketika pemeriksaan kondisi gagal. Item yang diambil akan masuk`$ctx.result.cancellationReasons[$index].item`, di `$index` mana indeks item permintaan yang gagal dalam pemeriksaan kondisi. Nilai ini default ke true.