Update 和 Delete
Update / Updates 用来修改数据,Delete 用来删除数据。
修改和删除都要特别注意条件。
一、更新单个字段
这里的 Model(&user) 会根据 user.ID 定位数据。
二、按条件更新
推荐写清楚条件:
不要在没有条件时更新整张表。
三、更新多个字段
使用结构体:
使用 map:
四、结构体更新会忽略零值
这是非常容易踩的坑。
使用结构体更新时,GORM 默认不会更新零值字段,例如:
""0false
确实要更新零值时,使用 map:
五、基于原值更新
文章浏览量加 1:
需要导入:
这种写法适合:
- 浏览量加 1
- 库存减 1
- 积分累加
六、删除数据
按主键删除:
按条件删除:
删除前建议先查询确认:
七、软删除和硬删除
如果模型包含:
执行:
GORM 会更新 deleted_at,不会真正删除行。
如果要查询包含软删除的数据:
如果要真正删除:
当前阶段不要轻易使用 Unscoped().Delete,它会真正删除数据。
八、检查影响行数
RowsAffected 可以判断是否真的影响了数据。

