首页 > 后端开发 > Golang > 正文

我什么时候应该在 GORM 中使用 FirstOrCreate() 与 FirstOrInit() ?

Mary-Kate Olsen
发布: 2024-11-12 03:45:01
原创
862 人浏览过

When Should I Use FirstOrCreate() vs. FirstOrInit() in GORM?

使用 GORM 创建或更新记录

GORM 提供了两种管理数据库中记录的方法:FirstOrCreate() 和 FirstOrInit()。但是,有时您可能会遇到需要区分创建和更新记录的情况。

检查记录创建

FirstOrCreate() 尝试根据记录查找记录根据指定的标准。如果存在,则返回现有记录。如果不存在,则创建一条新记录并返回新创建的记录。

要检查记录是否实际创建,您可以在事务中使用 Create 方法。如果交易成功,则记录已创建。如果交易失败,则意味着该记录已存在且尚未创建。

使用 GORM 更新插入

从 GORM 1.20.x 开始,这是一个方便的功能称为“Upsert”可用。它通过提供兼容的“冲突时更新插入”机制结合了 CreateOrUpdateRecord 的功能。

此查询转换为 SQL 语句,例如:

  • MERGE INTO...当不匹配时插入...当匹配时更新...(SQL Server)
  • 插入...冲突时(...)执行更新设置...(PostgreSQL)
  • 插入...重复键更新...(MySQL)

FirstOrInit 与 FirstOrCreate

重要的是要注意 FirstOrInit()和 FirstOrCreate() 有不同的用途。 FirstOrInit() 初始化一个结构体,但不会在数据库中创建记录。另一方面,FirstOrCreate() 将创建一条记录,然后将其查询到提供的结构中。

以上是我什么时候应该在 GORM 中使用 FirstOrCreate() 与 FirstOrInit() ?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板