

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

# AttributeUpdates (warisan)
<a name="LegacyConditionalParameters.AttributeUpdates"></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 *UpdateExpression*sebagai gantinya.](#UpdateExpression.instead). 

Dalam operasi `UpdateItem`, parameter bersyarat warisan `AttributeUpdates` berisi nama-nama atribut yang akan dimodifikasi, tindakan yang akan dilakukan pada setiap atribut, dan nilai baru untuk setiap atribut. Jika Anda memperbarui atribut yang merupakan atribut kunci indeks untuk setiap indeks pada tabel tersebut, jenis atribut harus sesuai dengan jenis kunci indeks yang didefinisikan dalam `AttributesDefinition` pada deskripsi tabel. Anda dapat menggunakan `UpdateItem` untuk memperbarui setiap atribut non-kunci.

Nilai atribut tidak boleh nol. Atribut jenis Biner dan String harus memiliki panjang lebih dari nol. Atribut jenis set tidak boleh kosong. Permintaan dengan nilai kosong akan ditolak dengan pengecualian `ValidationException`.

Setiap elemen `AttributeUpdates` terdiri dari nama atribut untuk dimodifikasi, beserta hal berikut:
+  `Value` - Nilai baru, jika berlaku, untuk atribut ini.
+  `Action` - Sebuah nilai yang menentukan cara melakukan pembaruan. Tindakan ini hanya berlaku untuk atribut yang ada yang jenis datanya adalah Angka atau sebuah set; jangan gunakan `ADD` untuk jenis data lainnya. 

  Jika item dengan kunci primer tertentu ditemukan dalam tabel, nilai berikut melakukan tindakan berikut:
  +  `PUT` - Menambahkan atribut tertentu pada item. Jika sudah ada, atribut akan digantikan oleh nilai baru. 
  +  `DELETE` - Menghapus atribut dan nilainya, jika tidak ada nilai yang ditentukan untuk `DELETE`. Jenis data dari nilai yang ditentukan harus sesuai dengan jenis data dari nilai yang ada.

    Jika suatu set nilai ditentukan, nilai-nilai tersebut dikurangi dari set lama. Sebagai contoh, jika nilai atribut adalah set `[a,b,c]` dan tindakan `DELETE` menentukan `[a,c]`, nilai atribut akhir adalah `[b]`. Menentukan satu set kosong adalah kesalahan.
  +  `ADD` - Menambahkan nilai yang ditentukan untuk item, jika atribut belum ada. Jika atribut tidak ada, perilaku `ADD` bergantung pada jenis data dari atribut:
    + Jika atribut yang ada berupa angka, dan jika `Value` juga berupa angka, `Value` secara matematis ditambahkan ke atribut yang ada. Jika `Value` adalah angka negatif, nilai tersebut dikurangi dari atribut yang ada.
**catatan**  
Jika Anda menggunakan `ADD` untuk menambah atau mengurangi nilai angka untuk item yang tidak ada sebelum pembaruan, DynamoDB menggunakan 0 sebagai nilai awal.  
Begitu pun halnya, jika Anda menggunakan `ADD` untuk item yang ada untuk menambah atau mengurangi nilai atribut yang tidak ada sebelum pembaruan, DynamoDB menggunakan `0` sebagai nilai awal. Misalnya, anggap item yang ingin Anda perbarui tidak memiliki atribut bernama *itemcount*, tetapi Anda memutuskan untuk tetap `ADD` angka `3` ke atribut ini. DynamoDB akan membuat atribut *itemcount*, mengatur nilai awalnya ke `0`, dan akhirnya menambahkan `3` ke nilai tersebut. Hasilnya akan menjadi atribut *itemcount* baru, dengan nilai `3`.
    + Jika jenis data yang ada merupakan sebuah set, dan jika `Value` juga merupakan sebuah set, `Value` ditambahkan ke set yang ada. Misalnya, jika nilai atribut adalah set `[1,2]`, dan tindakan `ADD` menentukan `[3]`, nilai atribut akhir adalah `[1,2,3]`. Terjadi kesalahan jika tindakan `ADD` ditentukan untuk atribut set dan jenis atribut yang ditentukan tidak cocok dengan jenis set yang ada. 

      Kedua set harus memiliki jenis data primitif yang sama. Sebagai contoh, jika jenis data yang ada adalah set string, `Value` juga harus berupa set string.

  Jika item dengan kunci yang ditentukan ditemukan dalam tabel, nilai berikut melakukan tindakan berikut:
  +  `PUT` - Menyebabkan DynamoDB membuat item baru dengan kunci primer yang ditentukan, lalu menambahkan atribut. 
  +  `DELETE` - Tidak terjadi apa-apa, karena atribut tidak dapat dihapus dari item yang tidak ada. Operasi berhasil, tapi DynamoDB tidak membuat item baru.
  +  `ADD` - Menyebabkan DynamoDB membuat item dengan kunci primer yang disediakan dan angka (atau set angka) untuk nilai atribut. Satu-satunya jenis data yang diperbolehkan adalah Angka dan Set Angka.

Jika Anda memberikan atribut apa pun yang merupakan bagian dari kunci indeks, set data untuk atribut tersebut harus sesuai dengan skema dalam definisi atribut tabel.

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

Misalkan Anda ingin memodifikasi item dalam tabel *Musik*. Anda dapat menggunakan `UpdateItem` permintaan dengan `AttributeUpdates` parameter, seperti dalam AWS CLI contoh ini:

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

Anda dapat menggunakan `UpdateExpression` sebagai gantinya:

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