2
我正在使用去插入一個新的用戶到MySQL數據庫。在插入用戶之前,我在msg
表中保存某種「日誌消息」。兩個表(msg
和user
)都有auto-increment
。爲了接收通過自動增量選擇的id,我使用mysql的LAST_INSERT_ID()
函數。這應該是線程安全的,正如許多關於堆棧溢出的其他討論中指出的,因爲它綁定到單個連接。Statement.Close影響mysql中線程安全的LAST_INSERT_ID在golang中嗎?
我問自己是否stmt.Close()
每stmt.Exec()
會以任何方式改變mysql的行爲(特別是線程安全性)?
stmt, _ := db.Prepare("INSERT INTO msg (message) VALUES(?)")
stmt.Exec(msg)
stmt.Close()
stmt, _ = db.Prepare("SELECT LAST_INSERT_ID()")
stmt.QueryRow().Scan(&msgid)
stmt.Close()
stmt, _ = db.Prepare("INSERT INTO user (msg_id) VALUES(?)")
stmt.Exec(msgid)
stmt.Close()
stmt, _ = db.Prepare("SELECT LAST_INSERT_ID()")
stmt.QueryRow().Scan(&id)
stmt.Close()
謝謝!我知道第一部分,但不知道有'事務'之類的東西。謝謝! :) –