...
1 package main
2
3 import "database/sql"
4
5 func recordStats(db *sql.DB, userID, productID int64) (err error) {
6 tx, err := db.Begin()
7 if err != nil {
8 return
9 }
10
11 defer func() {
12 switch err {
13 case nil:
14 err = tx.Commit()
15 default:
16 tx.Rollback()
17 }
18 }()
19
20 if _, err = tx.Exec("UPDATE products SET views = views + 1"); err != nil {
21 return
22 }
23 if _, err = tx.Exec("INSERT INTO product_viewers (user_id, product_id) VALUES (?, ?)", userID, productID); err != nil {
24 return
25 }
26 return
27 }
28
29 func main() {
30
31 db, err := sql.Open("mysql", "root@/blog")
32 if err != nil {
33 panic(err)
34 }
35 defer db.Close()
36
37 if err = recordStats(db, 1 , 5 ); err != nil {
38 panic(err)
39 }
40 }
41
View as plain text