Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagian ini menjelaskan cara menggunakan transaksi dengan PartiQL untuk DynamoDB. Transaksi PartiQL dibatasi hingga 100 total pernyataan (tindakan).
Untuk informasi lebih lanjut tentang transaksi DynamoDB, lihat Mengelola alur kerja kompleks dengan transaksi DynamoDB.
catatan
Seluruh transaksi harus terdiri dari pernyataan baca atau pernyataan tulis. Anda tidak dapat menggabungkan keduanya dalam satu transaksi. Fungsi EXISTS merupakan pengecualian. Anda dapat menggunakannya untuk memeriksa kondisi atribut tertentu dari item dengan cara yang mirip ConditionCheck
dengan operasi TransactWriteItemsAPI.
Sintaks
[
{
"Statement":" statement
",
"Parameters":[
{
" parametertype
" : " parametervalue
"
}, ...]
} , ...
]
Parameter
statement
-
(Diperlukan) Pernyataan yang didukung PartiQL untuk DynamoDB.
catatan
Seluruh transaksi harus terdiri dari pernyataan baca atau pernyataan tulis. Anda tidak dapat menggabungkan keduanya dalam satu transaksi.
parametertype
-
(Opsional) Jenis DynamoDB, jika parameter digunakan saat menentukan pernyataan PartiQL.
parametervalue
-
(Opsional) Nilai parameter jika parameter digunakan saat menentukan pernyataan PartiQL.
Nilai yang dikembalikan
Pernyataan ini tidak mengembalikan nilai apa pun untuk operasi Tulis (INSERT, UPDATE, atau DELETE). Namun, ia mengembalikan nilai yang berbeda untuk operasi Baca (SELECT) berdasarkan kondisi yang ditentukan dalam klausul WHERE.
catatan
Jika salah satu operasi INSERT, UPDATE, atau DELETE singleton mengembalikan kesalahan, transaksi dibatalkan dengan pengecualian TransactionCanceledException
, dan kode alasan pembatalan termasuk kesalahan dari operasi singleton individual.
Contoh
Contoh berikut menjalankan beberapa pernyataan sebagai sebuah transaksi.
-
Simpan kode JSON berikut ke file bernama partiql.json.
[ { "Statement": "EXISTS(SELECT * FROM \"Music\" where Artist='No One You Know' and SongTitle='Call Me Today' and Awards is MISSING)" }, { "Statement": "INSERT INTO Music value {'Artist':?,'SongTitle':'?'}", "Parameters": [{\"S\": \"Acme Band\"}, {\"S\": \"Best Song\"}] }, { "Statement": "UPDATE \"Music\" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} where Artist='Acme Band' and SongTitle='PartiQL Rocks'" } ]
-
Jalankan perintah berikut di prompt perintah.
aws dynamodb execute-transaction --transact-statements file://partiql.json
Contoh berikut menunjukkan nilai pengembalian yang berbeda ketika DynamoDB membaca item dengan kondisi berbeda yang ditentukan dalam klausul WHERE.
-
Simpan kode JSON berikut ke file bernama partiql.json.
[ // Item exists and projected attribute exists { "Statement": "SELECT * FROM "Music" WHERE Artist='No One You Know' and SongTitle='Call Me Today'" }, // Item exists but projected attributes do not exist { "Statement": "SELECT non_existent_projected_attribute FROM "Music" WHERE Artist='No One You Know' and SongTitle='Call Me Today'" }, // Item does not exist { "Statement": "SELECT * FROM "Music" WHERE Artist='No One I Know' and SongTitle='Call You Today'" } ]
-
perintah berikut di prompt perintah.
aws dynamodb execute-transaction --transact-statements file://partiql.json
-
Respons berikut dikembalikan:
{ "Responses": [ // Item exists and projected attribute exists { "Item": { "Artist":{ "S": "No One You Know" }, "SongTitle":{ "S": "Call Me Today" } } }, // Item exists but projected attributes do not exist { "Item": {} }, // Item does not exist {} ] }