使用复合键删除行
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)
我有具有以下架构的 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)