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 item

Mengapa itu terjadi

  • ConditionCheck ditambah penulisan pada kunci yang sama — Anda mencoba menegaskan kondisi pada item dan juga Update/Delete dalam transaksi yang sama. Lipat kondisinya ke dalam ConditionExpression tulis.
  • Dua penulisan ke kunci yang sama — mis. Put dan Update untuk 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

  1. Hapus duplikat dengan kunci utama sebelum membuat transaksi — setiap {PK, SK} dapat muncul satu kali.
  2. Gabungkan ConditionCheck ke dalam penulisan penjagaannya: letakkan pernyataan di ConditionExpression milik item tersebut daripada menambahkan tindakan ConditionCheck terpisah.
  3. Gabungkan dua mutasi menjadi satu Update menggunakan satu UpdateExpression (SET/ADD/REMOVE), bukan dua tindakan.
  4. 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.
  5. Catat kunci utama dalam larik TransactItems Anda. 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

Kesalahan terkait

Referensi

Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.