gpt4 book ai didi

gorm exec 使用原始 sql 从插入事务返回 ID

转载 作者:行者123 更新时间:2023-12-05 06:03:49 30 4
gpt4 key购买 nike

我正在使用 GORM 运行 SQL 查询。我正在尝试将 Exec 一个 INSERT 语句作为 TRANSACTION,因为我需要能够返回最新插入的 ID。

这是一个代码片段:

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,并且可以通过使用它的方法获益。

type Something struct {
ID int
A string
B string
}

something := Something{
A: "Foo",
B: "Bar",
}

db.Transaction(func(tx *gorm.DB) error {
// save your item in the transaction (use 'tx' from this point, not 'db')
if err := tx.Create(&something).Error; err != nil {
fmt.Println(err.Error())
// returning any error will rollback
return err
}

// do anything else within the transaction...

// return nil will commit the whole transaction
return nil
})

fmt.Printf("%+v/n", something)

之后,原始的 something 变量将包含刚刚创建的 ID:

{
"ID": 26,
"A": "Foo",
"B": "Bar"
}

关于gorm exec 使用原始 sql 从插入事务返回 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66571074/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com