如何定义GORM自动增量的起始值

问题描述 投票:0回答:2

我的项目中使用了gorm,我需要为其自增功能设置一个起始值。 我尝试添加这一行,但没有进展:

type User struct {
    gorm.Model
    ID         uint `gorm:"primarykey;autoIncrement:100"`
    Email      string `gorm:"not null; unique" form:"email" binding:"required"`
}

如何为 gorm AutoIncrement 函数定义像 100 这样的起始值?

mysql go auto-increment go-gorm
2个回答
1
投票

我不认为,你可以用 gorm 本地完成它。这有点 hacky,但您可以在 AutoMigrate 之后执行原始 SQL 查询来设置增量值:

SELECT GREATEST(100, MAX(id) + 1) FROM table_name INTO @autoinc;
ALTER TABLE table_name AUTO_INCREMENT = @autoinc;

通过这种方式,您可以确保该值至少为 100(如果表中没有行),或者如果已经有行,则它是下一个值。


0
投票

我找到了解决办法。在自动迁移代码之后,您可以编写以下代码:

DB.Create(
 <your_table_model>{
    ID: <start_value>, 
    DeletedAt: gorm.DeletedAt{Time: time.Now(), Valid: true}}
)
© www.soinside.com 2019 - 2024. All rights reserved.