我有一个问题,我真的不知道怎么问
我有这样的桌子
user table
-----------------------------------
UID (primary key) | name (another key)
-----------------------------------
a1c8d3 | Hugo
f9e2d7 | Thomas
s2c9d4 | Damien
metadata table
-----------------------------------
MID (primary key) | UID (another key)
-----------------------------------
c3d9d3 | a1c8d3
d8f1e6 | a1c8d3
d3j5c2 | f9e2d7
我有一个函数来获取用户表的所有UID,它们存储在数组中
当我删除该数组的用户时,我要删除元数据表中与已删除用户具有相同UID的项目
是否可以在不使用主键(此处为MID)的情况下删除元数据表中的项目?
还是我需要将元数据表的UID设置为全局二级索引?如果是,我该怎么办?
提前谢谢
最诚挚的问候
答案 0 :(得分:2)
否。
DeleteItem()需要表的主键(docs)
您需要查询元数据表,并删除具有匹配UID的行。
如果您还没有的话,建议您使用 哈希键= UID 排序键= MID
然后,使用您的示例数据的Query(GSI,hash = UID)将返回两行。 然后,您将为每个返回的行调用DeleteItem(Table,HashKey = MID)。
或者更好的是,同时收集两个删除内容,并以BatchWriteItem()的形式发送一次