全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 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

📝 发现内容有误?点击此处直接编辑

← 上一篇 字段忽略与只读配置
下一篇 → 索引标签配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库