我打算使用Update ... USING TIMESTAMP ...语句来确保我不会使用陈旧数据覆盖新数据,同时必须避免至少执行LOCAL_QUORUM写入。
这是我的表结构。
Table=DocumentStore
DocumentID (primaryKey, bigint)
Document(text)
Version(int)
如果服务收到2个版本= 1且版本= 2的写入请求,则无论到达顺序如何,业务要求是我们最终在数据库中使用Version = 2.
我可以使用以下CQL语句吗?
Update DocumentStore using <versionValue>
SET Document=<documentValue>,
Version=<versionValue>
where DocumentID=<documentIDValue>;
有人用这样的东西吗?如果是这样的行为如预期的那样?
答案 0 :(得分:0)
是的,这是一种已知的技术。虽然它应该是
UPDATE "DocumentStore" USING TIMESTAMP <versionValue>
SET "Document" = <documentValue>,
"Version" = <versionValue>
WHERE "DocumentID" = <documentIDValue>;
您错过了TIMESTAMP
关键字,并且由于您使用了区分大小写的名称,因此应将它们用引号括起来。