ステージングとコミット
DynoTable でのすべての編集は、DynamoDB に触れる前にステージングエリアを 通ります。安全ラッチ付きの git ステージングエリアだと考えてください: 編集、 作成、削除が確認可能な差分として蓄積され、コミットしたときに初めて として送信されます。
あなたがそう指示するまで、テーブルには何も書き込まれません。
仕組み
各テーブルは独自のステージングエリアを持ち、そのテーブルのすべてのビューで 共有されます。アイテム編集を保存したり、行を作成したり、 削除したりすると、その変更が属性ごとの差分としてパネルに現れます — 追加・削除・ 変更された属性が並べて表示されます。グリッド内の該当する行は、操作ごとに 色付けされます:
- 緑 — 新しいアイテム(作成)
- オレンジ — 更新(変更されたセルがハイライト)
- 赤 — 削除(取り消し線付き)
同じテーブルを 2 つのタブで開くと、両方が同じ保留中の変更を表示します。タブを 閉じて開き直しても、ステージは残っています。タブを閉じてもステージング済みの 変更が破棄されることは決してありません。
⌘⇧D でパネルを切り替えます。端をドラッグしてサイズを変更します。

変更の確認
各差分カードは、何が変わるかを正確に示します:
- スカラーは旧 → 新を、赤/緑のハイライトでレンダリングします。
- 長い文字列は、単語レベルのインライン差分を表示します。
- Map と List は、整形された JSON としてレンダリングされます(v1 では属性全体)。
カードの属性ごとの Reject を使って、単一の属性を元の値に戻します。すべての 属性を Reject すると、変更全体が破棄されます。
コミット
コミットして、ステージング済みの変更を DynamoDB に書き込みます:
- Commit N は、そのテーブルのステージング済み変更を — そのすべてのタブに またがって — すべて送信します。
- Commit just this はカードから単一の変更を送信します。
コミットは、楽観的ロックの条件付きで TransactWriteItems バッチとして
送信されます: 更新は、属性が開始時の値をまだ保持している場合にのみ成功し、
作成は、アイテムがまだ存在しない場合にのみ成功し、削除は、アイテムがまだ
存在する場合にのみ成功します。大きなステージは、DynamoDB のトランザクション
制限内に収まるよう自動的にチャンク分割されます。
エディタの保存ショートカットはここでも適用されます:
- ⌘S — ステージング(コミットなし)
- ⌘⇧S — 保存してコミット
- ⌘⇧X — ステージング済み変更をすべて破棄(確認あり)
グリッドの選択から、エディタを開かずに削除をステージングできます:
- ⌘⌫ — 選択した行の削除をステージング
- ⌘⇧⌫ — 選択した行を削除してコミット
競合
コミットは楽観的ロックを使うため、あなたがステージングした後に他の誰かが コミットした変更は、静かに上書きされるのではなく検出されます。カードには インラインのバナーが表示されます:
- Drift — リモートのアイテムがあなたの下で変わりました。Rebase onto remote でベースラインを更新して再確認するか、変更を Abort します。
- Remote deleted — アイテムはもう存在しません。変更を Abort します。
- Network unavailable — コミットが DynamoDB に到達できませんでした。 Retry するか abort します。
コミットは最初に失敗したバッチで停止します — それ以前の成功したバッチは 書き込まれたまま残り、残りは試行されず、失敗は解決すべき競合として表示されます。
コミットをブロックするもの
一部の状態は読み取り専用で、ステージングはできてもコミットはできません — 最も 顕著なのは、期限切れまたは読み取り専用のライセンスです。 ステージングは引き続き機能します。アプリが有効な状態に戻ると、コミットが再び ロック解除されます。


