私はhttp://godoc.org/github.com/gocql/gocqlを読ん
でいますが、INSERTの実行方法がわかりません-gocqlで存在しない場合。
それは述べた
func (*クエリ) ScanCAS
func (q *Query) ScanCAS(dest ...interface{}) (適用された bool、err エラー)
ScanCAS は軽量トランザクション (IF 句を含む UPDATE または INSERT ステートメント) を実行します。既存の値が一致しなかったためにトランザクションが失敗した場合、以前の値が dest に格納されます。
私が走るとき
cluster := gocql.NewCluster("127.0.0.1")
cluster.Keyspace = "example"
cluster.Consistency = gocql.Quorum
session, _ := cluster.CreateSession()
defer session.Close()
var mapQ map[string]interface{}
var inserted bool
var id gocql.UUID
var timeline, text string
// insert a tweet
isTrue, 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 を説明している良いページはありますか?