全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-21 5 分钟 ✍️ juanwangdev

标签配置默认值

GORM 支持通过 default 标签为字段设置数据库级别的默认值,在插入记录时自动填充。

什么是 default 标签

default 标签用于在数据库层面定义字段的默认值,当插入数据未提供该字段时,数据库自动使用默认值填充。

基本语法

Go
type Model struct {
    Field Type `gorm:"default:value"`
}

使用示例

数值默认值

Go
type Product struct {
    ID    uint    `gorm:"primaryKey"`
    Name  string  `gorm:"size:256"`
    Price float64 `gorm:"default:0.00"`
    Stock int     `gorm:"default:0"`
}

字符串默认值

Go
type User struct {
    ID     uint   `gorm:"primaryKey"`
    Name   string `gorm:"size:100"`
    Role   string `gorm:"size:50;default:user"`
    Status string `gorm:"size:20;default:active"`
}

时间默认值

Go
type Order struct {
    ID        uint      `gorm:"primaryKey"`
    CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"`
    UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"`
}

布尔默认值

Go
type User struct {
    ID       uint `gorm:"primaryKey"`
    IsActive bool `gorm:"default:true"`
    IsVIP    bool `gorm:"default:false"`
}

与 Go 默认值的区别

方式定义位置生效时机
Go 默认值结构体初始化创建对象时
gorm default 标签数据库列定义插入数据时
Go
// Go 层面默认值
user := User{Role: "user"}

// 数据库层面默认值(推荐)
type User struct {
    Role string `gorm:"default:user"`
}
// 插入时未指定 Role,数据库自动填充 "user"

注意事项

  • default 值在数据库层面生效,不依赖 Go 代码
  • 使用 SQL 函数(如 CURRENT_TIMESTAMP)时直接用字符串
  • 字符串默认值不需要加引号,GORM 会自动处理
  • 空字符串 "" 不会触发默认值

要点总结

类型示例
数值gorm:"default:0"
字符串gorm:"default:user"
时间gorm:"default:CURRENT_TIMESTAMP"
布尔gorm:"default:true"

存放路径:D:\git2\jwdev\articles\GORM\入门\模型标签与字段配置\标签配置默认值.md

想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 gorm tag 使用
下一篇 → 字段忽略与只读配置
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码