我尝试使用updateItem作为根据维基它的作品更新现有的
编辑现有项的属性,或者在表中添加一个新项(如果它不存在)
我想储存:
我有以下代码:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = if_not_exists(opens + :var1, :var0), last_open = :var2, first_open = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var0': "0",
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
遇到新的错误
调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:语法错误;标记:\“\”,靠近:\“打开:var1\”“
以下内容适用于现有项目,但对新项目会引发错误:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = opens + :var1, last_open = :var2, first_reachout = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
只有新的错误:
“调用UpdateItem操作时发生错误(ValidationException):提供的表达式引用了项中不存在的属性”
我猜这意味着联系人属性,但将其包含在“if_not_exists”中也不起作用。。。。
您可以在中找到UpdateExpression语法的文档https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.SET.你的问题的相关部分如下:
value ::=
operand
| operand '+' operand
| operand '-' operand
operand ::=
path | function
也就是说,“”只能位于表达式的顶层,不能位于函数的参数内。
幸运的是,有一个简单的解决方法。不要尝试if_not_exists(打开: var1,: var0)
,而是尝试": var1if_not_exists(打开: var0)
。
操作步骤 1.通过 tableID 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表 let MyTableObject = new BaaS.TableObject(tableID) 参数说明 参数 类型 必填 说明 tableID Number 是 数据表 ID 2.本地创建一条空记录 let MyRecord = MyTableObject.create() 3.
{% tabs first=”SDK 1.1.0 及以上版本”, second=”SDK 1.1.0 以下版本” %} {% content “first” %} SDK 1.1.0 及以上版本 操作步骤 1.通过 tableID 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表 let MyTableObject = new wx.BaaS.TableObject(t
问题内容: 在我们的数据库中,有一个用创建的表。现在,我们使用此表创建了一个视图。我们想为此视图添加聚簇索引。 创建聚簇索引时,它会显示一个错误,例如无法创建索引,因为此特定表的ANSI_NULL已关闭。 该表包含大量数据。因此,我想将此选项更改为ON,而不会丢失任何数据。 有什么方法可以更改表来修改此选项。请提出您的建议。 问题答案: 这是交叉发布在数据库管理员上的,所以我也可以在这里发布我的答
问题内容: 我想编写Sql Query,以按百分比增加商品价格。 场景是:- 在表中,我有3个栏目:ID,项目名称,价格 问题答案: 如果您要更新表,则可以进行条件更新。 如果您希望在选择时不对表进行任何更新就显示增加的价格,则可以执行以下操作。
问题内容: 我有一个现有的日期对象,希望将其增加一天,同时将其他所有字段保持不变。我遇到的每个示例都耗时数小时/分钟/秒,或者您必须创建一个新的日期对象并转移字段。有没有一种方法可以将日字段提前1? 谢谢 编辑:对不起,我并不是说要把当天的值增加一,我的意思是将日期提前1 问题答案: Calendar c = Calendar.getInstance(); c.setTime(yourdate);
因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?