Permintaan transaksi tidak dapat mencakup beberapa operasi pada satu item
TL;DR — Dua tindakan dalam permintaan TransactWriteItems yang sama menargetkan item yang sama (kunci utama yang sama). DynamoDB mengharuskan setiap item dalam transaksi menjadi unik, sehingga menolak seluruh panggilan sebelum menjalankannya. Perkecil tindakan duplikat menjadi satu, atau pindahkan salah satunya ke penulisan terpisah.
Apa artinya
ValidationException: Transaction request cannot include multiple operations on one itemMengapa itu terjadi
ConditionCheckditambah penulisan pada kunci yang sama — Anda mencoba menegaskan kondisi pada item dan jugaUpdate/Deletedalam transaksi yang sama. Lipat kondisinya ke dalamConditionExpressiontulis.- Dua penulisan ke kunci yang sama — mis.
PutdanUpdateuntuk item yang sama, sering kali dari loop yang tidak menghapus duplikat dengan kunci. - Kumpulan yang dihasilkan dengan kunci duplikat — lapisan ORM atau pemetaan memancarkan kunci pengurutan+partisi yang sama dua kali.
- Kunci yang sama dalam dua tindakan berbeda di seluruh tabel yang menurut Anda_ berbeda — itemnya unik
{table, PK, SK}; pengulangan dalam tabel yang sama memicunya.
Bagaimana cara memperbaikinya
- Hapus duplikat dengan kunci utama sebelum membuat transaksi — setiap
{PK, SK}dapat muncul satu kali. - Gabungkan
ConditionCheckke dalam penulisan penjagaannya: letakkan pernyataan diConditionExpressionmilik item tersebut daripada menambahkan tindakanConditionCheckterpisah. - Gabungkan dua mutasi menjadi satu
Updatemenggunakan satuUpdateExpression(SET/ADD/REMOVE), bukan dua tindakan. - Pisahkan logika multi-langkah yang tidak dapat dihindari ke dalam transaksi terpisah atau tulis jika operasi tersebut benar-benar tidak dapat dinyatakan sebagai satu tindakan.
- Catat kunci utama dalam larik
TransactItemsAnda. Kunci duplikat mudah terlewatkan dalam kumpulan yang dihasilkan — cetak setiap{PK, SK}sebelum dikirim.
Cek dulu di DynoTable
Sebelum membuat transaksi multi-item, daftarkan kunci target di DynoTable — buka tabel dengan ⌘K dan konfirmasikan setiap kunci utama unik dalam daftar tindakan Anda. Staging (⌘S) memungkinkan Anda menguji transaksi satu item sebelum Anda meningkatkannya.
Gabungkan pemeriksaan kondisi ke dalam penulisan menggunakan Pembuat Ekspresi. Ganti profil dengan ⌘P; lihat Menghubungkan ke AWS dan Instal.
Sumber
- TransactWriteItems — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
- Transaksi Amazon DynamoDB: Cara kerjanya (diverifikasi 13-07-2026)
Kesalahan terkait
- TransactionCanceledException — transaksi diuraikan tetapi kondisi atau konflik membatalkannya saat penerapan.
- Terlalu banyak item dalam panggilan TransactWriteItems — lebih dari 100 tindakan dalam satu transaksi.
- ValidationException (ikhtisar)
- Contoh kode: TransactWriteItems di Node.js — transaksi multi-item yang valid untuk diadaptasi.
- Pelajari: transaksi DynamoDB
Referensi
- TransactWriteItems — Referensi Amazon DynamoDB API
- Transaksi Amazon DynamoDB: Cara kerjanya — Panduan Pengembang Amazon DynamoDB
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.