假设表名为:company\u employee
select * from company_employee ;
company_id | company_name | employee_id_name_map | employee_id_department_map
------------+--------------+------------------------------+---------------------------
123 | abc | {'1': 'john'} ,{'2': 'jack'} | {'1': 'tech'} ,{'2': 'hr'}
在这里,我想将employee\id\u name\uMap元素{'1':'john'}的ttl设置为30,将employee\id\u department\uMap元素{'1':'tech'}的ttl设置为40有没有办法使用单个cassandra命令更新这两个元素?
我已经尝试过使用下面的单个命令为map中的单个元素设置ttl
UPDATE company_employee USING TTL 30 SET employee_id_name_map['1']='john' WHERE company_id='123' and company_name = 'abc';
UPDATE company_employee USING TTL 40 SET employee_id_department_map['1']='tech' WHERE company_id='123' and company_name = 'abc';
使用上面的Cassandra命令它的工作很好,但我想在一个单一的Cassandra写,任何好的建议帮助我很多。。
提前谢谢
1条答案
按热度按时间6fe3ivhb1#
不,不能在一个cql语句中设置不同的ttl。但是您可以使用批处理将多个命令组合到一个cassandra写操作中(如果您使用相同的分区键)。这样地: