根据 AWS Docs :
An update expression consists of one or more clauses. Each clause begins with a SET, REMOVE, ADD or DELETE keyword. You can include any of these clauses in an update expression, in any order. However, each action keyword can appear only once.
我无法在一个 update_expression
中获得正确的 SET
和 REMOVE
语法:
params = {
key: {
'id' => { s: '123' }
},
table_name: 'customers'
expression_attribute_names: {
'#ADR' => 'address'
'#ON' => 'order_num'
},
expression_attribute_values: {
':a' => { s: '123 Main St' }
},
update_expression: 'REMOVE #ON, SET #ADR = :a',
}
dynamodb = Aws::DynamoDB::Client.new(region: 'us-east-1',
simple_attributes: false)
dynamodb.update_item(params)
我还尝试了以下方法:
update_expression: 'SET #ADR = :a, REMOVE #ON' => Invalid UpdateExpression: Syntax error; token: "REMOVE", near: ", REMOVE #ON" (Aws::DynamoDB::Errors::ValidationException)
update_expression: ['SET #ADR = :a', 'REMOVE #ON'] => expected params[:update_expression] to be a String, got value ['SET #ADR = :a', 'REMOVE #ON'] (class: Array) instead. (ArgumentError)
谁能告诉我正确的文档?
最佳答案
我把它弄得太复杂了。
这是答案:
update_expression: 'SET #ADR = :a REMOVE #ON'
除了 Clause 关键字外不需要分隔符。
关于ruby - 如何分隔 DynamoDB 更新表达式中的多个子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45553443/