首页 > 解决方案 > SQL Last Insert ID 总是返回 0

问题描述

query, err := dbSQL.Prepare(`
        INSERT INTO class (
            subject_id,
            class_name,
            createAt,
            updatedAt,
        )
        VALUES (?, ?, NOW(), NOW())
    `)

checkError(err)

result, err := query.Exec(
    subjectID,
    className,
)

checkError(err)

returnID, err := result.LastInsertId()

checkError(err)

dbSQL.Commit()

returnID总是返回 0

注意:我的自动增量是禁用的。

怎么了?是因为dbSQL.Commit()低于result.LastInsertId()还是自动递增造成混乱?

标签: mysqldatabasego

解决方案


这个线程中提到了它,作为建议:

最好使用 SP 并在此 SP 中返回最后一个 id

(SP:存储过程)
Go 中的示例

示例:“在 mySQL Server 上执行存储过程时如何获取lastInsertID

如此处所述,这比依赖直接调用更安全。


推荐阅读