这段代码并没有删除数据,不知道为什么。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 EXISTS
/ IF NOT EXISTS
。干杯!
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消