默认情况下,DynamoDB 写入操作(PutItem
、UpdateItem
和 DeleteItem
)是无条件的:其中每项操作都会覆盖带指定主键的现有项目。
DynamoDB 可以选择性地对这些操作支持有条件写入。有条件写入仅在项目属性满足一个或多个预期条件时才会成功。否则,它会返回错误。有条件写入在很多情况下很有用。例如,您可能希望 PutItem
操作仅在尚不存在具有相同主键的项目时成功。或者,如果某个项目的其中一个属性具有一个特定值,您可以阻止 UpdateItem
操作修改该项目。
Conditional Writes
有条件写入在多个用户尝试修改同一项目的情况下很有用。请考虑下图,其中两位用户 (Alice 和 Bob) 正在处理 DynamoDB 表中的同一项目:
要请求有条件 PutItem
、DeleteItem
或 UpdateItem
,请指定一个条件表达式。条件表达式 是一个包含属性名称、条件运算符和内置函数的字符串。整个表达式的求值结果必须为 true。否则,操作将失败。
现在考虑下图,该图展示了有条件写入将如何阻止 Alice 的更新被覆盖: