我想进行更新,但我想添加的条件检查不是基于主表的哈希/范围,而是GSI的。实际上,如果给定属性(即GSI的哈希)已存在,则要使保存失败。例如,在虚构的员工表中,“SSN”是哈希键,并且有一个“EmployeeId”的GSI。这两个属性都需要在整个表格中唯一。在保存员工时,我想确保“SSN”或“EmployeeId”中没有一个已在表格中使用。我可以对表格的哈希,即SSN进行此操作,但无法对GSI的哈希进行操作。这是否有支持?我没有在文档中看到这一点。谢谢!
employeeId
。由于这是一个表而不是GSI,因此您可以使用TransactWriteItems请求同时写入EmployeeData和EmployeeId-InUse表。如果事务的任何部分失败,则事务将失败,因此您可以使用ConditionExpression来Prevent Overwrites of an Existing Item以确保如果SSN或EmployeeId已存在,则事务将失败。“TransactItems”: [
{
“Put” : {
“ConditionExpression” : “attribute_not_exists(ssn)”,
“Item” : {
... employee data goes here ...
},
“TableName”: “EmployeeData”
}
},
{
“Put” : {
“ConditionExpression” : “attribute_not_exists(employeeId)”,
“Item” : {
“employeeId”: {
“S” : “Employee1457”
}
},
“TableName”: “EmployeeIDs-InUse”
}
}
]