暂存与提交
DynoTable 中的每一次编辑在触及 DynamoDB 之前都会经过一个暂存区。可以把它想象成带有安全闩的 git 暂存区:编辑、创建和删除会作为可审阅的 diff 累积起来,然后仅在你提交时才以的形式发出。
在你下令之前,任何内容都不会写入你的表。
工作原理
每张表都有自己的暂存区,在该表的每个视图之间共享。当你保存一次条目编辑、创建一行或删除一行时,该更改会作为逐属性的 diff 落入面板 —— 新增、移除和更改的属性并排显示。网格中受影响的行会按操作着色:
- 绿色 —— 一个新条目(创建)
- 橙色 —— 一次更新(更改的单元格被高亮)
- 红色 —— 一次删除(带删除线)
在两个标签页中打开同一张表,它们会显示相同的待处理更改;关闭再重新打开某个标签页,暂存内容仍然在那里。关闭一个标签页绝不会丢弃你已暂存的更改。
用 ⌘⇧D 切换面板。拖动它的边缘可调整大小。

审阅更改
每张 diff 卡片都精确显示将要更改的内容:
- 标量以旧 → 新的形式呈现,带红/绿高亮。
- 长字符串显示内联的逐词 diff。
- Map 和 List 呈现为美化打印的 JSON(v1 中按整个属性处理)。
使用卡片的逐属性拒绝可将单个属性回退到其原始值。拒绝每一个属性,整个更改就会被丢弃。
提交
提交即可把你已暂存的更改写入 DynamoDB:
- 提交 N 会发出该表的每一项已暂存更改 —— 横跨它的所有标签页。
- 仅提交此项会从某张卡片发出单个更改。
提交以带乐观锁条件的 TransactWriteItems 批次发出:一次更新只有在属性仍保持你开始时的值时才会成功,一次创建只有在条目尚不存在时才会成功,一次删除只有在条目仍然存在时才会成功。较大的暂存会自动分块,以保持在 DynamoDB 的事务限制之内。
编辑器中的保存快捷键在这里同样适用:
- ⌘S —— 暂存(不提交)
- ⌘⇧S —— 保存并提交
- ⌘⇧X —— 丢弃所有已暂存的更改(需确认)
从网格选区你可以暂存删除而无需打开编辑器:
- ⌘⌫ —— 暂存对选中行的删除
- ⌘⇧⌫ —— 删除并提交选中行
冲突
由于提交使用乐观锁,在你暂存之后被他人提交的更改会被检测出来,而不是被悄悄覆盖。卡片会显示一个内联横幅:
- 漂移 —— 远端条目在你之下发生了变化。rebase 到远端会刷新基线以便你重新审阅,或者中止该更改。
- 远端已删除 —— 该条目不再存在。中止该更改。
- 网络不可用 —— 提交无法到达 DynamoDB。重试或中止。
一次提交会在第一个失败的批次处停止 —— 较早成功的批次保持已写入,其余的不会被尝试,失败会以待解决的冲突形式呈现。
哪些情况会阻止提交
某些状态是只读的,可以暂存但不能提交 —— 最典型的是过期或只读的许可证。暂存仍然有效;一旦应用回到激活状态,提交就会再次解锁。


