UpdateItem - Amazon DynamoDB

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

UpdateItem

penting

This section refers to API version 2011-12-05, which is deprecated and should not be used for new applications.

Untuk dokumentasi tentang API tingkat rendah saat ini, lihat Referensi API Amazon DynamoDB.

Deskripsi

Mengedit atribut item yang ada. Anda dapat melakukan pembaruan bersyarat (memasukkan pasangan nama-nilai atribut baru jika tidak ada, atau mengganti pasangan nama-nilai yang ada jika memiliki nilai atribut tertentu yang diharapkan).

catatan

Anda tidak dapat memperbarui atribut kunci utama menggunakan UpdateItem. Sebagai gantinya, hapus item dan gunakan PutItem untuk membuat item baru dengan atribut baru.

UpdateItem Operasi mencakup Action parameter, yang mendefinisikan cara melakukan pembaruan. Anda dapat menempatkan, menghapus, atau menambahkan nilai atribut.

Nilai atribut tidak boleh null; atribut jenis string dan biner harus memiliki panjang lebih dari nol; dan atribut jenis set tidak boleh kosong. Permintaan dengan nilai kosong akan ditolak dengan ValidationException.

Jika item yang ada memiliki kunci primer yang ditentukan:

  • PUT— Menambahkan atribut yang ditentukan. Jika sudah ada, atribut akan digantikan oleh nilai baru.

  • DELETE— Jika tidak ada nilai yang ditentukan, ini akan menghapus atribut dan nilainya. Jika suatu set nilai ditentukan, nilai-nilai dalam set yang ditentukan dihapus dari set lama. Jadi, jika nilai atribut berisi [a,b,c] dan tindakan menghapus berisi [a,c], nilai atribut akhir adalah [b]. Jenis nilai yang ditentukan harus sesuai dengan jenis nilai yang ada. Menentukan suatu set kosong tidak valid.

  • ADD— Hanya gunakan tindakan add untuk angka atau jika atribut target adalah suatu set (termasuk set string). ADD tidak berfungsi jika atribut target adalah nilai string tunggal atau nilai biner skalar. Nilai yang ditentukan ditambahkan ke nilai numerik (menambah atau mengurangi nilai numerik yang ada) atau ditambahkan sebagai nilai tambahan dalam suatu set string. Jika suatu set nilai ditentukan, nilai-nilai ditambahkan ke set yang ada. Misalnya jika set asli adalah [1,2] dan nilai yang disediakan adalah [3], maka setelah operasi add, set adalah [1,2,3], bukan [4,5]. Terjadi kesalahan jika tindakan Add ditentukan untuk atribut set dan jenis atribut yang ditentukan tidak cocok dengan jenis set yang ada.

    Jika Anda menggunakan ADD untuk atribut yang tidak ada, atribut dan nilai-nilainya ditambahkan ke item.

Jika tidak ada item yang cocok dengan kunci primer yang ditentukan:

  • PUT – Membuat item baru dengan kunci primer yang ditentukan. Lalu menambahkan atribut yang ditentukan.

  • DELETE— Tidak ada yang terjadi.

  • ADD— Membuat item dengan kunci primer dan angka (atau set angka) yang disediakan untuk nilai atribut. Tidak berlaku untuk jenis string atau biner.

catatan

Jika Anda menggunakan ADD untuk menambah atau mengurangi nilai angka untuk item yang tidak ada sebelum pembaruan, DynamoDB menggunakan 0 sebagai nilai awal. Selain itu, jika Anda memperbarui item menggunakan ADD guna menambah atau mengurangi nilai angka untuk atribut yang tidak ada sebelum pembaruan (tetapi item ada), DynamoDB menggunakan 0 sebagai nilai awal. Sebagai contoh, Anda menggunakan ADD untuk menambahkan +3 ke atribut yang tidak ada sebelum pembaruan. DynamoDB menggunakan 0 sebagai nilai awal, dan nilai setelah pembaruan adalah 3.

Untuk informasi lebih lanjut tentang penggunaan operasi ini, lihat Bekerja dengan item dan atribut di DynamoDB.

Permintaan

Sintaks

// This header is abbreviated. // For a sample of a complete header, see API tingkat rendah DynamoDB. 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" }
Nama Deskripsi Wajib
TableName

Nama tabel yang berisi item untuk diperbarui.

Jenis: String

Ya
Key

Kunci primer yang menentukan item. Untuk informasi selengkapnya tentang kunci primer, lihat Kunci primer.

Jenis: Peta HashKeyElement ke nilainya dan RangeKeyElement ke nilainya.

Ya
AttributeUpdates

Peta nama atribut ke nilai baru dan tindakan baru untuk diperbarui. Nama atribut menentukan atribut untuk dimodifikasi, dan tidak dapat berisi atribut kunci primer apa pun.

Jenis: Peta nama atribut, nilai, dan tindakan untuk pembaruan atribut.

AttributeUpdates:Action

Menentukan cara melakukan pembaruan. Kemungkinan nilai: PUT (default), ADD atau DELETE. Semantik dijelaskan dalam deskripsi. UpdateItem

Tipe: String

Default: PUT

Tidak
Expected

Menunjuk atribut untuk pembaruan bersyarat. Parameter Expected memungkinkan Anda untuk memberikan nama atribut, dan apakah DynamoDB harus memeriksa keberadaan nilai atribut; atau apakah nilai atribut ada dan memiliki nilai tertentu sebelum mengubahnya.

Jenis: Peta nama atribut.

Tidak
Expected:AttributeName Nama atribut untuk penempatan bersyarat.

Jenis: String

Tidak
Expected:AttributeName: ExpectedAttributeValue Gunakan parameter ini untuk menentukan apakah nilai sudah ada atau belum untuk pasangan nama-nilai atribut.

Notasi JSON berikut memperbarui item jika atribut "Warna" tidak ada untuk item tersebut:

"Expected" : {"Color":{"Exists":false}}

Notasi JSON berikut memeriksa untuk melihat apakah atribut dengan nama "Warna" sudah memiliki nilai "Kuning" sebelum memperbarui item tersebut:

"Expected" : {"Color":{"Exists":true},{"Value":{"S":"Yellow"}}}

Secara default, jika Anda menggunakan parameter Expected dan menyediakan Value, DynamoDB mengasumsikan bahwa atribut ada dan memiliki nilai terkini untuk diganti. Jadi Anda tidak perlu menentukan {"Exists":true}, karena hal tersebut sudah tersirat. Anda dapat mempersingkat permintaan untuk:

"Expected" : {"Color":{"Value":{"S":"Yellow"}}}
catatan

Jika Anda menentukan {"Exists":true} tanpa nilai atribut untuk diperiksa, DynamoDB mengembalikan kesalahan.

Tidak
ReturnValues

Gunakan parameter ini jika Anda ingin mendapatkan pasangan nama-nilai atribut sebelum pasangan tersebut diperbarui dengan permintaan UpdateItem. Nilai parameter yang memungkinkan adalah NONE (default) atau ALL_OLD, UPDATED_OLD, ALL_NEW, atau UPDATED_NEW. Jika ALL_OLD ditentukan, dan UpdateItem menimpa pasangan nama-nilai atribut, isi dari item lama akan dikembalikan. Jika parameter ini tidak tersedia atau NONE, tidak ada yang dikembalikan. Jika ALL_NEW ditentukan, semua atribut versi baru dari item tersebut akan dikembalikan. Jika UPDATED_NEW ditentukan, versi baru dari hanya atribut yang diperbarui akan dikembalikan.

Jenis: String

Tidak

Respons

Sintaks

Contoh sintaksis berikut mengasumsikan permintaan ditentukan dalam parameter ReturnValues dari ALL_OLD; jika tidak, respons hanya memiliki elemen ConsumedCapacityUnits.

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 }
Nama Deskripsi
Attributes

Sebuah peta pasangan nama-nilai atribut, tetapi hanya jika parameter ReturnValues ditentukan sebagai sesuatu selain NONE dalam permintaan.

Jenis: Peta pasangan nama-nilai atribut.

ConsumedCapacityUnits

Jumlah unit kapasitas tulis yang digunakan dalam operasi. Nilai ini menunjukkan jumlah yang diterapkan pada throughput yang disediakan. Untuk informasi selengkapnya, lihat Mode kapasitas yang disediakan DynamoDB.

Jenis: Angka

Kesalahan khusus

Kesalahan Deskripsi
ConditionalCheckFailedException Pemeriksaan bersyarat gagal. Atribut nilai ("+ name +") adalah ("+ value +") tetapi diharapkan ("+ expValue +")
ResourceNotFoundExceptions Item atau atribut yang ditentukan tidak ditemukan.

Contoh

Untuk contoh menggunakan AWS SDK, lihatBekerja dengan item dan atribut di DynamoDB.

Permintaan sampel

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

Respons sampel

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 }