📜  有条件地更新列

📅  最后修改于: 2021-09-08 16:24:27             🧑  作者: Mango

在本文中,我们将讨论如何有条件地更新列,并讨论 IF、IF EXISTS 和 IF NOT EXISTS 条件命令如何有助于条件更新。

条件更新非常有用,因为查询将返回 TRUE 或 FALSE 中的结果,并且事务跟在 IF、IF EXISTS 和 IF NOT EXISTS 之后,此类命令适用于 Cassandra 中的轻量级事务。那么,让我们来看看。

如果查询匹配一行,则 IF EXISTS 命令将成功执行,如果该行匹配,则返回结果 TRUE,否则返回 FALSE。让我们通过一个例子来理解。

CREATE TABLE Help_desk
(
 User_name  text,
 Request_id  uuid,
 Query_description text,
 Request_date date,
 Primary key(User_name)
); 

现在,将一些数据插入 Help_desk。

INSERT INTO Help_desk (Request_id, User_name, Query_description, Request_date ) 
VALUES (uuid(), 'Ashish', ' App is not working', '2019-12-10');

INSERT INTO Help_desk (Request_id, User_name, Query_description, Request_date ) 
VALUES (uuid(), 'Rana', ' keyboard is not working', '2019-12-11');

INSERT INTO Help_desk (Request_id, User_name, Query_description, Request_date ) 
VALUES (uuid(), 'Abi', ' cpu is not working', '2019-12-13'); 

让我们看看结果。

select * 
from Help_desk; 

输出:

现在,我们将在这里更新 Help_desk 表。
我们来看一下。

UPDATE Help_desk
SET Query_description = 'Resolve and closed the ticket.' 
WHERE User_name = 'Ashish'  
IF EXISTS; 

在上面的 CQL 查询中,如果该行存在,则返回 true。
让我们看看结果。

输出:

在上面的 CQL 查询中,如果不存在行,则返回 true。
让我们看看结果。

[applied]
-----------
   False 
UPDATE Help_desk
SET Request_id = uuid()
WHERE User_name = 'Ashish'
IF NOT EXISTS; 

使用 IF 条件将测试应用于匹配行中的一个或多个其他(非主键)列值。

现在,我们将在这里对匹配行中的其他列值使用 IF 条件。例如,仅当 Request_id 匹配时才设置新的 UUID。

UPDATE Help_desk
SET Request_id = uuid()  
WHERE User_name = 'Rana'
IF Request_id = NULL; 

让我们看看结果。

输出:

在这里,我们将检查 IF 条件测试是否为空值,例如:

UPDATE Help_desk 
SET Request_id = uuid()  
WHERE User_name = 'Rana'
IF Request_id = NULL; 

让我们看看结果。

输出:

现在,在这里我们将看到所有更改后的最终表输出。

让我们看看结果。

select * 
from Help_desk; 

输出:

笔记:

  • 在上面的场景中,如果 A 记录匹配并且 Request_id 列没有插入值,我们只是提到了几点。
  • 这是第二个观察结果,如果 A 记录匹配并且 Request_id 列有一个值(不为空),则语句失败。
  • 如果没有与相应条件匹配的记录,则创建新记录。

注意:在 CQL 查询中,条件更新是轻量级事务的示例,它们会产生不可忽略的性能,这会产生成本并且应该谨慎使用。