根据AWS Docs:
更新表达式由一个或多个子句组成。每个条款 以SET,REMOVE,ADD或DELETE关键字开头。你可以包括任何 更新表达式中的这些子句的任何顺序。但是,每一个 action关键字只能出现一次。
我无法在一个SET
中获得REMOVE
和update_expression
的语法权限:
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)
有人能指出我正确的文档吗?
答案 0 :(得分:10)
我太复杂了 这就是答案:
update_expression: 'SET #ADR = :a REMOVE #ON'
除了Clause关键字之外,不需要分隔符。