【发布时间】:2016-08-04 23:28:31
【问题描述】:
根据 Cassandra 文档,插入和更新的行为相同。但如果我尝试以下命令:
CREATE TABLE IF NOT EXISTS my_keyspace.users (
userId UUID,
name TEXT,
surname TEXT,
phone TEXT
PRIMARY KEY (userId, name, surname)
);
INSERT INTO my_keyspace.users (userId, name, surname, phone)
VALUES (6f4c9ece-d47e-4582-a9e3-6c6f740f47d6, 'John', 'Doe', '555 5555 555') USING TTL 20;
UPDATE my_keyspace.users USING TTL 10 SET phone = '777 777 777'
WHERE userId = 6f4c9ece-d47e-4582-a9e3-6c6f740f47d6 AND name = 'John' AND surname = 'Doe'
IF phone = '555 5555 555';
10s列值置NULL,20s整行删除
但如果我试试这个:
UPDATE my_keyspace.users USING TTL 20 SET phone = '777 777 777' WHERE userId = 6f4c9ece-d47e-4582-a9e3-6c6f740f47d6 AND name = 'John' AND surname = 'Doe';
UPDATE my_keyspace.users USING TTL 10 SET phone = '777 777 777' WHERE userId = 6f4c9ece-d47e-4582-a9e3-6c6f740f47d6 AND name = 'John' AND surname = 'Doe' IF phone = '555 5555 555';
10s后删除整行
谁能解释为什么在这种情况下行为不同,以及主键列如何实际决定何时删除自己?
【问题讨论】: