代码如下:
func getNo(name string) (int,){
_, err := db.Exec("call getNo(?, @ret, @no)", name)
if err != nil {
log.Println("call procedure getNo error:", err.Error())
return -1,0
}
row := db.QueryRow("select @ret, @no")
var ret int
var no string
err = row.Scan(&ret, &no)
if err != nil {
log.Println("query getNo result:", ret, "; error: ", err.Error())
return -2,0
}
return ret,no
}
我的问题是:db.Exec和*db.QueryRow*分两次调用,如果存在并发情况(多个goroutine同时调用getNo),mysql如果后面的QueryRow是哪一个发送的呢?
如果通过数据库连接来区分,但是因为db.Exec和db.QueryRow分两次调用,并发情况无法保证是同一个连接。