简单的事情。将数据插入表 A 时,我有一个HashKey id 和列 ex_id 的附加哈希索引,这是表中的一个外键乙
在表格 A 中插入新数据时,我想在数据插入时使用 ex_id 列中没有通讯记录的值创建异常表 B 中的条目。
我认为ConditionExpression
是要走的路,但不能让它发挥作用 - 可能会遗漏一些明显的东西。试图使用contains()
...
有什么想法吗?
答案 0 :(得分:0)
据我所知,这在DynamoDB结束时是不可能的,因为表之间没有任何关系。
你可以做的是你可以在应用程序级别拥有一个条件,它自己检查并在表A中插入值之前抛出异常。(如果找到那么你可以查询表B中的“Id” insert else throw exception)
答案 1 :(得分:0)
DynamoDB本身不支持任何类型的外键支持,每个键基于每个表都可以工作。 DynamoDB的方法是在客户端级别处理此类逻辑。例如,请参阅dynamodb transactions client。此库允许您跨表执行所有成功或全部回滚的事务。
对于您的情况,我首先会对表 B (使用一致性读取)进行getItem请求(如果存在),然后写入表 A 。
然后我会在表 A 上启用流并编写一个lambda函数来检查是否有任何数据违规被写入表中。