【问题标题】:Deleting row using composite key使用复合键删除行
【发布时间】:2017-12-13 13:33:17
【问题描述】:

我有具有以下架构的表“column_defn”。键是 column_name、database_name 和 table_name

column_name             STRING(130)     NOT NULL
database_name           STRING(150)     NOT NULL
table_name              STRING(130)     NOT NULL
column_description      STRING(1000)    NOT NULL

我正在尝试使用以下 REST 请求删除一行

{
  "session":"xxxxxxxxx"
  "singleUseTransaction": {
    "readWrite": {}
  },
  "mutations": [
    {
      "delete": {
        "table": "column_defn",
        "keySet": {
          "keys": [
            [
              {
                "column_name": "testd"
              },
              {
                "table_name": "test atbd"
              },
              {
                "database_name": "ASDFDFS"
              }
            ]
          ]
        }
      }
    }
  ]
}

但我不断收到以下错误。关于上述请求中哪里有问题的任何想法

{
  "error": {
    "code": 400,
    "message": "Invalid value for column database_name in table column_defn: Expected STRING.",
    "status": "FAILED_PRECONDITION"
  }
}

更新:以下请求似乎成功了。至少它返回了成功代码 200 和 commitTimestamp。但是,该行没有被删除

{
  "singleUseTransaction": {
    "readWrite": {}
  },
  "mutations": [
    {
      "delete": {
        "table": "column_defn",
        "keySet": {
          "keys": [
            [
              "testd",
              "dsafd",
              "test atbd"
            ]
          ]
        }
      }
    }
  ]
}

【问题讨论】:

  • 感谢您的宝贵时间。我提到了链接,但似乎是更高级别的 JavaScript 库。在构建自己的库时,我正在为此操作寻找正确的线路格式。到目前为止,我无法让它工作。

标签: google-cloud-platform google-cloud-spanner


【解决方案1】:

keys 应该包含一个数组数组。在外部数组中,您尝试删除的每一行都有一个条目。每个内部数组将是定义单行的键值的有序列表(顺序很重要)。所以在你的例子中,你想要:

"keys": [["testd","ASDFDFS","test atbd"]]

请注意,原始问题与表中键的真实顺序不一致。上面的答案假设主键定义如下:

PRIMARY KEY(column_name,database_name,table_name)

【讨论】:

  • 我最初得到了正确的数组数组,但“顺序很重要”似乎是关键。我按顺序定义了我的键(database_name,table_name,column_name)。订购要求使图书馆开发变得更加困难。我希望我可以提供类似 { "database_name": "asd", "table_name": "fda", "column_name": "fad" } 的内容。无论如何,我更正了订单并且工作正常。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多