У меня есть две таблицы: тренеры и команды. У Coach есть: id (ключ раздела) и имя. Команды имеют: id (ключ раздела), name и coachId. Пример:
coaches: [{
id: '1',
name: 'bob'
}]
teams: [
{
id: 1,
name: 'alpha'
coachId: 1
},
{
id: 2,
name: 'beta'
coachId: 1
}
];
Я хочу удалить тренера с id = 1 и обновить все команды, где coachId = 1, и удалить это поле. Ожидаемый результат:
coach: [];
teams: [
{
id: 1,
name: 'alpha'
},
{
id: 2,
name: 'beta'
}
];
Итак, у меня есть 3 операции:
- удалить тренера
- команда обновления с id = 1
- команда обновления с id = 2
Все операции должны быть в транзакции. Итак, я могу использовать transactWriteItems
:
dynamodb.transactWriteItems([{
Delete: {
Key: {
id: {
S: '1',
},
},
TableName: 'Coaches',
},
}, {
Update: {
Key: {
id: {
S: '1',
},
},
UpdateExpression: `remove coachId`,
TableName: 'Teams',
},
}, {
Update: {
Key: {
id: {
S: '2',
},
},
UpdateExpression: `remove coachId`,
TableName: 'Teams',
},
}]);
Но одна транзакция может содержать только до 25 операций. Итак, если у одного тренера будет 100 команд, это будет провал. Как я могу сделать?