【发布时间】:2021-06-08 18:28:05
【问题描述】:
我正在使用 GORM 运行 SQL 查询。我正在尝试将Exec 和INSERT 语句作为TRANSACTION,因为我需要能够返回最新插入的ID。
这是一个代码sn-p:
query := `
START TRANSACTION;
INSERT INTO something (a, b, c)
VALUES (@arg1, @arg2, @arg3);
SELECT LAST_INSERT_ID();
COMMIT;`
result := DB.Exec(
query,
sql.Named("arg1", "aaa"),
sql.Named("arg2", "bbb"),
sql.Named("arg3", "ccc"),
)
我已通读 GORM 事务文档,但示例与我的用例大不相同。
我的目标是创建一个 INSERT 语句,并最终从该创建返回给我最新的 ID。使用 MySQL。
有什么想法吗?
【问题讨论】:
-
我没有使用 GORM 的经验,但是使用简单的 SQL 语句,您可以使用
result.LastInsertId()。有关示例,请参见 github.com/hectorcorrea/hectorcorrea.com/blob/main/models/…。 -
你遇到了什么错误?
-
为什么不使用查询生成器而不是原始的?例如:stackoverflow.com/a/28776926/9984295