0

我正在尝试使用 Node sdk 更新一行,但我不断收到Error: NoSQLArgumentError: [ILLEGAL_ARGUMENT] PUT: Illegal Argument: Value should not be set for a generated always identity column: id.

我在这里做错了什么?

async function update(id, data, table)
{
    var timestamp = new Date
    res = await client.putIfPresent(table, {
        id: id,
        last_modified: timestamp,
        json_document: data
    })
}
4

1 回答 1

0

我创建了这个“回答你自己的问题”,因为第一次处理这个错误时,我决定更改我的所有代码以使用 SQL API 并使用 UPDATE 命令。我在想这是唯一的解决方案

您似乎已经为字段“id”创建了一个带有标识列的表,并且您使用了“始终生成”。在这种情况下,当您执行 put 操作时,不能为“id”设置任何值,否则您将收到此错误。此外,如果您尝试使用标识列更新(而不是创建)现有行,则根本不能使用 put() 而是必须使用更新查询

事实上,如果表是使用创建的,我们可以使用命令 putIfPresent generate by default。在这种情况下,前面的约束将不适用

Oracle NoSQL 支持以下选项:

  • 始终作为身份生成
  • 默认生成为身份
  • NULL 作为标识默认生成

根据您的要求,这很有趣

于 2021-06-14T09:37:56.570 回答