无论我是否在UDT中使用冻结关键字,它都在更新记录。
我有表用户:
CREATE TABLE demokeyspace.user (
userid text PRIMARY KEY,
address1 frozen<address>,
password text,
uname text
)
和地址类型:
CREATE TYPE demokeyspace.address (
street text,
city text,
zip_code int
);
正在更新街道:“已更新的街道”以及城市和邮政编码为空
根据Cassandra,如果声明为FROZEN,则不允许更新UDT值。
有人可以帮我吗?
答案 0 :(得分:2)
如果您使用未冻结的UDT,并且想要更新一个字段,则可以使用以下(see docs):
update user set address1.street='updated street' where userid='2';
在您的情况下,您正在使用UDT更新完整的address1
字段,而UDT的内部只有一个值...
如果您使用冻结的UDT,则必须指定更新期间的所有值,就像您现在正在做的事情一样,但是要提供所有值。
如果始终要更新完整记录,则鼓励使用冻结值,但是如果需要更新部分记录,则不应使用它。