Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Cassandra不允许update语句中使用udf?_Cassandra_Cql_Udf - Fatal编程技术网

为什么Cassandra不允许update语句中使用udf?

为什么Cassandra不允许update语句中使用udf?,cassandra,cql,udf,Cassandra,Cql,Udf,我是卡桑德拉的新手。我创建了一个表,并在其中插入了一些数据,现在我想从中选择数据,在输出中,我想要一些计算列 我创建了一个用户定义的函数concat,它连接两个字符串并返回结果。然后我注意到,当我在SELECT语句中使用这个函数时,它正确地显示了数据。但当我在UPDATE语句中使用时,它不起作用: 也就是说,这是可行的 select concat(prov,city), year,mnth,acno,amnt from demodb.budgets; 但事实并非如此 update demodb

我是卡桑德拉的新手。我创建了一个表,并在其中插入了一些数据,现在我想从中选择数据,在输出中,我想要一些计算列

我创建了一个用户定义的函数
concat
,它连接两个字符串并返回结果。然后我注意到,当我在SELECT语句中使用这个函数时,它正确地显示了数据。但当我在UPDATE语句中使用时,它不起作用:

也就是说,这是可行的

select concat(prov,city), year,mnth,acno,amnt from demodb.budgets;
但事实并非如此

update demodb.budgets set extra=concat(prov,city) where prov='ON';
此外,如果我们简单地将一列的值分配给同一类型的另一列(没有任何计算),更新也不起作用,如下所示

update demodb.budgets set extra=city where prov='ON';
而且,在Update语句中,即使是简单的算术计算也不起作用

也就是说,这也不起作用

update demodb.budgets set amnt = amnt + 20 where prov='ON';
这里的
amnt
是一个简单的双类型列

(当我看到这一幕时,我所能做的就是使劲拉扯头发说,我不能和卡桑德拉一起工作,我不想让它做简单的算术运算)


有人能帮助我如何实现所需的更新吗?

我认为你的问题的基本答案是先读后写,这在Cassandra中是一个巨大的反模式

分布式环境中的并发性问题是其中的一个关键点


.

你为什么要首先与卡桑德拉合作?你的<代码>选择<代码>,你对它们满意吗?我和卡桑德拉一起工作,因为公司想使用它,我的老板让我学习它。我希望能了解更大的情况。。。