全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

手动创建表

GORM 提供 CreateTable 方法,允许开发者手动定义并创建表结构,避免 AutoMigrate 的自动行为影响。

什么是手动创建表

CreateTable 根据模型结构体完整创建表,适用于需要精确控制表结构、避免自动迁移产生意外变更的场景。

基本语法

Go
func (m Migrator) CreateTable(dst ...interface{}) error

使用示例

创建单个表

Go
type Product struct {
    ID        uint    `gorm:"primaryKey"`
    Name      string  `gorm:"size:256;not null"`
    Price     float64 `gorm:"not null"`
    Stock     int     `gorm:"default:0"`
    CreatedAt time.Time
}

err := db.Migrator().CreateTable(&Product{})
if err != nil {
    log.Fatalf("创建表失败: %v", err)
}

创建多个表

Go
db.Migrator().CreateTable(&User{}, &Product{}, &Order{})

先删后建

Go
// 删除已存在的表后重新创建
db.Migrator().DropTable(&Product{})
db.Migrator().CreateTable(&Product{})

与 AutoMigrate 对比

特性CreateTableAutoMigrate
创建表
添加列
删除列
修改列部分支持
精确控制
适用场景生产环境、精确控制开发环境、快速迭代

注意事项

  • CreateTable 仅在表不存在时创建,若已存在会返回错误
  • 建议在创建前使用 HasTable 检查
  • 不会自动创建关联表,需要分别调用
  • 适合对表结构有严格要求的生产环境

要点总结

场景推荐方案
开发环境快速迭代AutoMigrate
生产环境精确控制CreateTable
需要先检查再创建HasTable + CreateTable
重建表结构DropTable + CreateTable

存放路径:D:\git2\jwdev\articles\GORM\入门\数据库迁移基础\手动创建表.md

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

← 上一篇 AutoMigrate 使用
下一篇 → 表结构检查
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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