如何更新timeuuid
Cassandra 中的列?
我尝试了以下查询
cqlsh:mydb> UPDATE mytable SET mycolumn = '99b47d70-b465-11e9-8080-808080808080' WHERE mycolumn= '99a53b30-b465-11e9-8080-808080808080';
它失败并显示消息
InvalidRequest:来自服务器的错误:code=2200 [Invalid query] message="timeuuid 类型的“mycolumn”的无效字符串常量 (99b47d70-b465-11e9-8080-808080808080)”
所以我尝试将常量值转换为 timeuuid
cqlsh:mydb> UPDATE mytable SET mycolumn = cast('99b47d70-b465-11e9-8080-808080808080' as timeuuid) WHERE mycolumn= cast('99a53b30-b465-11e9-8080-808080808080' as timeuuid);
这次它失败并出现错误
SyntaxException:第 1:34 行在输入“(”处没有可行的替代方案(UPDATE mytable SET mycolumn = cast
我看到了有关 cast 函数的文档,并且timeuuid
没有在任何其他类型的输出类型下列出。
https://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/refCqlFunction.html#refCqlFunction__cast
这是否意味着 timeuuid 列一旦创建就无法更新?
更新: 我在上面的页面上看到了以下信息
UPDATE 语句 SET 子句不能用于更改 PRIMARY KEY 字段;因此,只有当目标字段不是 PRIMARY KEY 字段的一部分时,才能设置新的 timeuuid。
因此,可以更新 timeuuid 列。mycolumn
不是 PRIMARY 键的一部分。
更新 2:
即使以下命令也失败并出现相同的错误no viable alternative at input
UPDATE website SET api_key = api_key WHERE 1;
那么我做错了什么?