📜  在 Cassandra 中使用批处理的静态类型

📅  最后修改于: 2021-09-10 02:37:12             🧑  作者: Mango

先决条件 – 卡桑德拉
在本文中,我们将讨论使用 BATCH 语句的静态列以及它如何与 BATCH 语句一起使用。静态列可用于使用批处理语句的条件更新。我们来看一下。

让我们考虑 bank_emp_details 是一个表名,Id、Name、Bank_name、E_start_date 和 E_end_date 是其中 Id 是主键而 Name 是集群键的字段。

CREATE TABLE bank_emp_details(
Id int,
Name text,
Bank_name text static,
E_start_date date static,
E_end_date date,
primary key(Id, Name)
); 

现在,我们在这里使用 Batch 语句来更新静态列。我们来看一下。

BEGIN BATCH 
INSERT INTO bank_emp_details(Id, Name, E_start_date, E_end_date) 
values (201, 'Ashish', '2019-12-06', '2020-12-06');

UPDATE bank_emp_details SET Bank_name = 'ABC'  
where Id = 201 IF Bank_name = NULL;
APPLY BATCH; 

让我们看看插入数据和更新后的静态列的输出。

SELECT * 
from bank_emp_details; 

输出:

现在,我们在这里尝试使用条件批处理更新静态列,但它会给出错误消息“条件批处理不能跨越多个分区”。让我们看看。

BEGIN BATCH 
INSERT INTO bank_emp_details(Id, Name, E_start_date, E_end_date) 
values (202, 'Ashish', '2019-12-06', '2022-12-06');

UPDATE bank_emp_details SET Bank_name = 'XYZ' 
where Id = 201 IF Bank_name = 'ABC';
APPLY BATCH; 

上面的查询将返回下面给出的以下错误消息。

输出:

现在,在这里我们将使用条件批处理更新静态列值,这将正常工作。我们来看一下。

BEGIN BATCH 
UPDATE bank_emp_details SET Bank_name = 'XYZ' 
where Id = 201 IF Bank_name = 'ABC';
APPLY BATCH; 

上面的查询将返回下面给出的以下输出。

输出:

让我们看看使用静态列的条件批处理的最终输出。我们来看一下。

SELECT * 
from bank_emp_details; 

输出: