2 回答
TA贡献1796条经验 获得超4个赞
虽然我不知道你的确切用例,但似乎在这里你并没有真正充分利用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)
之后,原始变量将包含刚刚创建的 ID:something
{
"ID": 26,
"A": "Foo",
"B": "Bar"
}
TA贡献2037条经验 获得超6个赞
只需执行此示例
var ID int64
tx.Raw("INSERT INTO yourTable (yourColumn) VALUES ('testInsertValue') RETURNING
id").Scan(&ID)
我使用tx假设你已经把你的交易设置为tx,你可以用多种方式进行交易。对于返回值,您可以使用模型的结构,而不是像示例中那样仅使用 var ID。
谢谢。
- 2 回答
- 0 关注
- 1228 浏览
添加回答
举报