使用复合键删除行

Deleting row using composite key

我有具有以下架构的 table '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"
            ]
          ]
        }
      }
    }
  ]
}

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

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

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

PRIMARY KEY(column_name,database_name,table_name)