我一直在阅读http://godoc.org/github.com/gocql/gocql 但我不明白如何插入 - 如果 gocql 不存在。它指出func (*Query) ScanCASfunc (q *Query) ScanCAS(dest ...interface{}) (applied bool, err 错误)ScanCAS 执行轻量级事务(即包含 IF 子句的 UPDATE 或 INSERT 语句)。如果事务因为现有值不匹配而失败,则先前的值将存储在 dest。当我跑cluster := gocql.NewCluster("127.0.0.1")cluster.Keyspace = "example"cluster.Consistency = gocql.Quorumsession, _ := cluster.CreateSession()defer session.Close()var mapQ map[string]interface{}var inserted boolvar id gocql.UUIDvar timeline, text string// insert a tweetisTrue, err := session.Query(`INSERT INTO tweet (timeline, id, text) VALUES (?, ?, ?) IF NOT EXIST`, "hermano", gocql.TimeUUID(), "good night"). ScanCAS(); if err != nil { log.Println(err)}fmt.Println(timeline, id, text)fmt.Printf("%+v\n", isTrue)fmt.Printf("%+v\n", inserted)fmt.Printf("%+v\n", mapQ)我得到:Failed parsing statement: [INSERT INTO tweet (timeline, id, text) VALUES (?, ?, ?) IF NOT EXIST] reason: ArrayIndexOutOfBoundsException -1所以我的问题是:1. 如何在 gocql 中实际执行 INSERT IF NOT EXIST?大家能给我举个例子吗?2. 如何做正确的ScanCAS?3. MapScanCAS 和 ScanCAS 有什么不同?我不明白作者在谈论什么列不匹配4. 在 godoc 页面旁边有解释 gocql 的好页面吗?
- 2 回答
- 0 关注
- 185 浏览
添加回答
举报
0/150
提交
取消