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

如何在 gocql 中插入如果不存在

如何在 gocql 中插入如果不存在

Go
犯罪嫌疑人X 2021-08-30 14:36:35
我一直在阅读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 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

看起来像一个错字,你应该使用“IF NOT EXISTS”


查看完整回答
反对 回复 2021-08-30
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

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