当ID在其他表中不存在时,使用ConditionExpression限制插入

时间:2015-11-22 00:49:20

标签: amazon-dynamodb

简单的事情。将数据插入表 A 时,我有一个HashKey id 和列 ex_id 的附加哈​​希索引,这是表中的一个外键

在表格 A 中插入新数据时,我想在数据插入时使用 ex_id 列中没有通讯记录的值创建异常表 B 中的条目。

我认为ConditionExpression是要走的路,但不能让它发挥作用 - 可能会遗漏一些明显的东西。试图使用contains() ...

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

据我所知,这在DynamoDB结束时是不可能的,因为表之间没有任何关系。

你可以做的是你可以在应用程序级别拥有一个条件,它自己检查并在表A中插入值之前抛出异常。(如果找到那么你可以查询表B中的“Id” insert else throw exception)

答案 1 :(得分:0)

DynamoDB本身不支持任何类型的外键支持,每个键基于每个表都可以工作。 DynamoDB的方法是在客户端级别处理此类逻辑。例如,请参阅dynamodb transactions client。此库允许您跨表执行所有成功或全部回滚的事务。

对于您的情况,我首先会对表 B (使用一致性读取)进行getItem请求(如果存在),然后写入表 A

然后我会在表 A 上启用流并编写一个lambda函数来检查是否有任何数据违规被写入表中。