這段代碼并沒有刪除數(shù)據(jù),不知道為什么。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()數(shù)據(jù)將被刪除。有誰知道如何在不增加延遲的情況下修復(fù)它?我在用著github.com/gocql/gocql
1 回答

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
Gocql 查詢是異步執(zhí)行DELETE
的,因此不能保證您的查詢在INSERT
.
在任何情況下,您的測(cè)試用例都是無效的,因?yàn)樵趧倓偛迦敕謪^(qū)后立即刪除它不是一個(gè)有效的用例。
作為旁注,您的代碼對(duì)我來說似乎是錯(cuò)誤的。您在插入數(shù)據(jù)時(shí)調(diào)用Query.ScanCAS()
,但查詢不是輕量級(jí)事務(wù)——它缺少條件IF EXISTS
/ IF NOT EXISTS
。干杯!
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)
0/150
提交
取消