为了账号安全,请及时绑定邮箱和手机立即绑定

Golang cassandra gocql事务需要延迟时间才能执行

Golang cassandra gocql事务需要延迟时间才能执行

Go
浮云间 2023-01-03 15:49:54
这段代码并没有删除数据,不知道为什么。s.Query(        "INSERT INTO smth (id, name) VALUES (?,?)",        data.ID        data.Name    ).ScanCAS(nil, nil, nil)s.Query(    "DELETE FROM smth WHERE id = ? AND name = ?",    data.ID    data.Name).Exec()但是如果我像这样添加一些延迟:s.Query(        "INSERT INTO smth (id, name) VALUES (?,?)",        data.ID        data.Name    ).ScanCAS(nil, nil, nil)time.Sleep(time.Second)s.Query(    "DELETE FROM smth WHERE id = ? AND name = ?",    data.ID    data.Name).Exec()数据将被删除。有谁知道如何在不增加延迟的情况下修复它?我在用着github.com/gocql/gocql
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

Gocql 查询是异步执行DELETE的,因此不能保证您的查询INSERT.

在任何情况下,您的测试用例都是无效的,因为在刚刚插入分区后立即删除它不是一个有效的用例。

作为旁注,您的代码对我来说似乎是错误的。您在插入数据时调用Query.ScanCAS(),但查询不是轻量级事务——它缺少条件IF EXISTSIF NOT EXISTS。干杯!


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信