GORM 2.0 获取最后插入ID

2023-12-03

我正在使用 MySQL 数据库进行操作GORM v 2.0。我正在使用 GORM 事务将行插入数据库(tx := db.Begin())。在之前的 GORM 版本中,Begin()sql.Tx允许使用的对象LastInsertId()查询返回参数的方法。

要在 GORM v 2.0 中做到这一点,我可以简单地调用db.Last()将行插入数据库后的功能,或者我可以使用更智能的方法?

谢谢。


在V2.0中GetLastInsertId方法被删除。正如 @rustyx 所说,ID 填充在您传递的模型中Create功能。我懒得打电话db.Last(&...)因为当模型已经拥有它时,这有点浪费。

    type User struct {
        gorm.Model
        Name string
    }

    user1 := User{Name: "User One"}

    _ = db.Transaction(func(tx *gorm.DB) error {
        tx.Create(&user1)
        return nil
    })

    // This is unnecessary
    // db.Last(&user1)

    fmt.Printf("User one ID: %d\n", user1.ID)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GORM 2.0 获取最后插入ID 的相关文章

  • 是否可以在 postgresql 中创建触发器而不执行过程?

    我想创建一个程序 其主体为 BL 我在 SQL 中找到了相同的示例 但在 postgresql 中没有找到 每个 RDBMS 都有自己的 SQL 语言 您无法在 PostgreSQL 中创建触发器 因为您可以在 Oracle MS SQL
  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • Node.js - 我可以在 PhoneGap / Cordova 应用程序上安装 NPM 包吗?

    感谢 Cordova 我正在构建一个移动应用程序 并且由于 Cordova 基于 Node js 我认为我可以在应用程序中使用 NPM 包 例如 我希望我的移动应用程序能够与远程 MySQL 数据库通信 我想我可以使用 mysql NPM
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • golang 将 big.Float 转换为 big.Int

    将big Float转换为big Int 我在下面编写代码 但它溢出了uint64 那么将big Float转换为big Int的正确方法是什么 package main import fmt import math big func Fl
  • sql查询中where子句中的CASE语句

    我正在尝试在我正在处理的查询的 where 子句中编写一个 case 语句 我正在水晶报告中导入代码 我基本上是想说明变量 类型 是否设置为 创建 以便在where子句中为该日期范围运行 否则为不同的日期范围运行 它一直给我一个错误 我似乎
  • 从 alpine 容器执行“go get download”时,如何避免出现“x509:由未知机构签名的证书”?

    我正在尝试使用以下 Dockerfile 从头开始 构建 coredns FROM golang alpine SHELL bin sh ec RUN apk update apk add no cache git make ca cert
  • Golang 使用 gomail.v2 实现多个收件人

    我通过 gomail v2 发送电子邮件的唯一方法是在 for 循环中对每封电子邮件使用 Send 函数 但我需要向其他电子邮件地址显示已发送相同的电子邮件 for recipient range os Args 3 mail SetAdd
  • GROUP_CONCAT 逗号分隔符 - MySQL

    我有一个疑问 我在哪里使用GROUP CONCAT和自定义分隔符 因为我的结果可能包含逗号 这一切都运行良好 但它仍然以逗号分隔 所以我的输出是 Result A Result B Result C 我怎样才能做到这一点 输出是 Resul
  • mysql utf8_general_ci 区分大小写

    我有一个 mysql 数据库 我使用 utf8 general ci 不区分大小写 在我的表中 我有一些列 例如 ID 和区分大小写的数据 例如 iSZ6fX 或 AscSc2 为了区分大写和小写 最好只在这些列上设置 utf8 bin 如
  • 选择语句REF oracle

    我需要一些帮助来创建将使用引用的选择语句 我设法很好地插入了值 但是当我尝试使用 where 语句提取值时 输出要么是数据类型错误 要么会输出两个表以及它们都包含的数据 这只是一个例子 Create or replace table1 Ty
  • Go中通过反射给struct成员赋值

    我有一个结构 v 其中包含成员 A B C 字符串 使用反射 我可以获得字段的名称及其值 typ v Type for i 0 i lt v NumField i gets us a StructField fi typ Field i f
  • 我不小心锁定了 MySQL 的 root

    我在 OS X 上使用 MySQL 并使用删除了所有 root 用户DROP USER 然后我又添加了其中一些并做了GRANT ALL on to root localhost 然后在验证确实是的之后注销 我可以登录并执行一些特权操作 不幸
  • 在 MySql 中查找周年纪念日是否在 n 天后到来

    我有一张写有周年纪念日的桌子 我想要一个查询 该查询返回接下来 10 天内即将到来的周年纪念日行 例如 birthdate 1965 10 10 1982 05 25 SELECT birthdate FROM Anniversaries
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • 在带有 OR 条件的 LEFT JOIN 中使用索引

    考虑以下查询 SELECT FROM table1 LEFT JOIN table2 ON table2 some primary key table1 some primary key LEFT JOIN table3 ON table3
  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码
  • 保存用户的身高和体重

    我应该如何将用户的身高和体重存储在MySQL数据库中 以便我可以使用这些信息来查找特定身高或体重内的用户 另外 我需要能够以英制或公制显示此信息 我的想法是存储以厘米为单位的身高和以公斤为单位的体重信息 我更喜欢公制而不是英制 我什至可以让
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试

随机推荐

  • 如何创建具有运行时间限制的数据结构

    我需要实现一个支持插入删除和搜索的数据结构 O log n 并在 O 1 中提取特殊对象 我的数据结构需要保存按 ID 排序的车辆 并且每辆车都有一个字段表示距离下一次服务的时间 我需要在 O 1 时间内提取接下来需要提供服务的车辆 欢迎所
  • 如何在Protege 4.3.0中启用Pellet?

    已经过去快一年了无法下载 Protege 4 3 的 Pellet 插件建议该版本不可用 有什么改变吗 应该可以从他们的 github 下载它并将其放入 Prog g 的插件文件夹中 https github com Complexible
  • 重复时间序列数据的 Pandas 滚动中位数

    我看到 Pandas 不允许重复的时间序列索引 yet https github com pydata pandas issues 643 但很快就会添加 我想知道是否有一种好方法可以通过多索引标签 列将滚动窗口方法应用于具有重复时间的数据
  • parseInt() 和 parseFloat() 位于哪里?

    当我在控制台中按 TAB 时 我看到了 parseInt 和 parseFloat 我只需输入 parseInt 123asd 但这些位于哪里 它们是全局对象的属性 内置函数 对于浏览器来说 这是window
  • 字符串作为数组索引

    In 3 XoePhoenix 数组索引是字符数组类型 我们可以用 C 来做这个吗 数组索引不是必须是整数吗 什么是3 XeoPhoenix mean 3 XoePhoenix 是相同的 XoePhoenix 3 所以它将评估为 char
  • IE10、11 带连字符的 CDATA 解析错误

    我遇到过这样的问题 当尝试解析从服务器收到的 xml 时 CDATA 块中包含的消息在 IE10 11 中解析 直到找到第一个连字符 请参阅我收到的 XML 示例
  • Chrome headless 忽略系统代理

    编辑 这是演示该问题的 YouTube 视频 https youtu be MIZjHKCVr1s 我正在使用 headless 标志与 chrome 一起运行 selenium 但显然使用 headless 似乎会忽略系统代理 我之前在
  • 将数组中的对象推入循环内[重复]

    这个问题在这里已经有答案了 几个小时以来 我一直在尝试解决这个问题 但我似乎确实无法成功 我正在尝试创建一个 JSON 字符串 如下所示 但是在传递变量的值时obj到变量j我得到的数组仅包含该循环的最后一个结果 而不是得到如下结果 mach
  • SCI - 系统控制中断向量是如何定义的?

    根据 ACPI 规范 FADT 固定 ACPI 描述表 表包含一个字段 用于报告SCI中断操作系统的编号 该字段定义如下 我在 Intel x86 平台上转储了 FADT 表 看到 SCI 中断与编号相关联9 但根据英特尔手册 0 31是
  • matplotlib 动态子图数量

    我正在尝试使用以下方法获取子图matplotlib 数量为subplots在运行时计算 如pnum以下示例有所不同 pnum len args m f ax1 ax2 plt subplots pnum sharex True sharey
  • 从 iOS 导出椭圆曲线密钥以与 OpenSSL 配合使用

    我生成了私钥 公钥对并将其存储在 Secure Enclave 内 它是 256 位椭圆曲线密钥 唯一可以存储在 Secure Enclave 中的密钥类型 I use SecKeyCreateWithData and SecKeyCopy
  • 使用主机 SSH 密钥在 DockerFile 中访问私有 Git 存储库

    我是 Docker 新手 正在尝试让我的 Angular Web 应用程序在容器中构建和运行 我在项目的根目录中有一个非常基本的 Dockerfile 如下所示 Create the image based on the official
  • 如何用C#将委托排队在后台串行执行?

    从游戏循环中 我想在后台开始工作 该工作应该一个接一个地执行 但不应阻止游戏循环 所以理想情况下是一个类BackgroundQueue可以这样使用 BackgroundQueue myQueue new BackgroundQueue ga
  • R构建文档术语矩阵如何匹配其值由空格分隔的短语组成的字典

    当使用R进行文本挖掘时 在对文本数据进行重新处理后 我们需要创建一个文档术语矩阵以供进一步探索 但是和中文类似 英语也有一些特定的阶段 比如 语义距离 机器学习 如果把它们分词成词 它的含义就完全不同了 我想知道如何匹配预先定义的词典值由空
  • 将字符串转换为 HTML - 字符串转换为“a href”元素

    您好 我在将一些 HTML 链接添加到我的 HTML 页面时遇到一些问题 我尝试四处寻找 但到目前为止没有任何帮助 我的页面最初将加载一个片段 div style display inline block color rgb 0 255 1
  • php默认时区错误

    我在尝试安装 Kohana SilverStripe 时收到以下错误 警告 这意味着什么 我该怎么做 Warning date default timezone get It is not safe to rely on the syste
  • SFINAE 检查表达式是否编译并返回 std::true_type [重复]

    这个问题在这里已经有答案了 如果以下表达式编译 我想获得 std true type template
  • 将之前通过手势旋转的 UIImageView 与另一个合并。 WYS 不是 WYG

    我在尝试合并两个 UIImageView 时变得疯狂 情况 背景 UIImageView 用户照片图像视图 一个重叠的 UIImageView 产品照片图像视图 可以拉伸 挤压和 旋转的 我在 UIImages 上调用我的函数 但我可以从包
  • 解析错误:语法错误,意外的 T_ECHO

    过去几天我一直在做一些事情 但是这一段代码总是抛出一个意想不到的 T ECHO 我的朋友们似乎找不到任何问题 而我正处于耐心的边缘 即使删除了嵌套的 while 循环 它仍然会抛出错误 我切换到 while endwhile 语法也是如此
  • GORM 2.0 获取最后插入ID

    我正在使用 MySQL 数据库进行操作GORM v 2 0 我正在使用 GORM 事务将行插入数据库 tx db Begin 在之前的 GORM 版本中 Begin 回sql Tx允许使用的对象LastInsertId 查询返回参数的方法