mysql - 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()
还是自动递增造成混乱?
解决方案
在这个线程中提到了它,作为建议:
最好使用 SP 并在此 SP 中返回最后一个 id
(SP:存储过程)
Go 中的示例。
示例:“在 mySQL Server 上执行存储过程时如何获取lastInsertID
”
如此处所述,这比依赖直接调用更安全。
推荐阅读
- c# - 不同类实现的常用方法
- r - R时间序列数据集 - 滞后日期和时间 - 不规则的数据周期
- python - 编写一个程序,要求输入并使用 ord 函数将其编码为每个字母的数字代码
- sql - 如何在具有重复 ID 的情况下查找唯一值?
- vue.js - 如何在 bootstrapvue 表中添加 rowspan 和 colspan?
- haskell - 围模板函数找不到Libz.so
- javascript - 离子电话间隙导航器地图不起作用
- vhdl - 如何将 std_logic_vector 的一位分配给 1,将其他位分配给 0
- r - 涉及第一个和第二个最大值的矩阵转换
- scikit-learn - 关于opencv的人脸识别算法验证(eigenface,fisherface,local binary pattern)