Use Result.LastInsertId()
. This is always reliable.
Doing your own SELECT
is not reliable, due to the way the Go driver handles pools of connection. If you do, say:
INSERT foo INTO bar ...
in one statement, then later:
SELECT LAST_INSERT_ID();
in another statement, you may get different connections to the database for each statement.
This means your manually-selected ID may correspond with some completely unrelated INSERT statement which just happened to occur on that same connection in the past, or you may get nothing at all.