暫存與提交
DynoTable 中的每次編輯在動到 DynamoDB 之前都會經過暫存區。可以把它想成帶有 安全閂的 git 暫存區:編輯、建立與刪除會累積為可檢視的 diff,然後只在你提交時才以 送出。
在你下令之前,不會有任何東西寫入你的表格。
運作方式
每個表格都有自己的暫存區,在該表格的每個檢視之間共享。當你儲存一次 項目編輯、建立一列或刪除一列時,變更會以逐屬性 diff 的 形式落入面板 — 新增、移除與變更的屬性並排顯示。表格中受影響的列會依操作著色:
- 綠色 — 新項目(建立)
- 橙色 — 更新(變更的儲存格會被標示)
- 紅色 — 刪除(劃線)
在兩個分頁中開啟同一個表格,它們會顯示相同的待處理變更;關閉再重新開啟一個分頁, 暫存仍然在那裡。關閉分頁絕不會捨棄你暫存的變更。
用 ⌘⇧D 切換面板。拖曳它的邊緣可調整大小。

檢視變更
每張 diff 卡片都精確顯示將會改變什麼:
- 純量值以紅/綠標示呈現舊 → 新。
- 長字串會顯示行內的字詞層級 diff。
- Map 與 List 以美化排版的 JSON 呈現(v1 為整個屬性)。
使用卡片的逐屬性拒絕可將單一屬性還原為其原始值。拒絕每個屬性,整筆變更便會 被捨棄。
提交
提交即可將你暫存的變更寫入 DynamoDB:
- 提交 N 會送出該表格的所有暫存變更 — 跨它的所有分頁。
- 只提交此筆會從卡片送出單一變更。
提交會以 TransactWriteItems 批次送出,並帶有樂觀鎖定條件:更新只在屬性仍保有
你開始時的值時才會成功,建立只在項目尚不存在時才會成功,刪除只在項目仍存在時才會
成功。大型暫存會自動分塊,以維持在 DynamoDB 的交易限制之內。
編輯器中的儲存快捷鍵在這裡同樣適用:
- ⌘S — 暫存(不提交)
- ⌘⇧S — 儲存並提交
- ⌘⇧X — 捨棄所有暫存的變更(需確認)
從格線的選取中,你可以不必開啟編輯器就暫存刪除:
- ⌘⌫ — 暫存刪除選取的列
- ⌘⇧⌫ — 刪除並提交選取的列
衝突
由於提交使用樂觀鎖定,在你暫存後由他人提交的變更會被偵測到,而非靜默覆蓋。卡片會 顯示一則行內橫幅:
- Drift — 遠端項目在你底下被改動了。Rebase onto remote 會重新整理基準, 讓你能重新檢視,或者中止該變更。
- Remote deleted — 該項目已不存在。中止該變更。
- Network unavailable — 提交無法連上 DynamoDB。重試或中止。
提交會在第一個失敗的批次停止 — 較早成功的批次仍維持已寫入,其餘的不會嘗試,而 失敗的會以衝突的形式浮現供你解決。
什麼會阻擋提交
某些狀態為唯讀,可以暫存但無法提交 — 最明顯的是過期或唯讀的 授權。暫存仍可運作;一旦應用程式回到使用中狀態,提交便會再次 解鎖。


