我的GORM主ID设置为18位数字,我如何强制该数字从1开始

时间:2018-11-13 00:12:10

标签: go-gorm

我正在使用GORM处理我的数据库操作。我的结构如下

type Job struct {
    gorm.Model
    JobID         int `gorm:"primary_key"`
    Jobitem       []Jobitem
    SubID         int    `sql:"not null"`
    StartDateTime string `sql:"not null"`
    JobStatus     string `sql:"not null"`
}

当我使用此结构插入表中时,主键长18位数字,例如:399758776912773121

是否有可能使该ID从1开始并从那里开始递增?

2 个答案:

答案 0 :(得分:0)

您同时使用gorm.Model并定义了自己的主键。所以我的猜测是gorm会自动认为您正在尝试使用Composite Primary Key,因为您的结构实际上是这样的:

type Job struct {
    // gorm.Model ↓
    ID            uint `gorm:"primary_key"` // Gorm uses this
    CreatedAt     time.Time
    UpdatedAt     time.Time
    DeletedAt     *time.Time `sql:"index"`
    // gorm.Model ↑

    JobID         int        `gorm:"primary_key"` // And also detects this
    Jobitem       []Jobitem
    SubID         int    `sql:"not null"`
    StartDateTime string `sql:"not null"`
    JobStatus     string `sql:"not null"`
}

长话短说,看看there for some documentation on gorm.Model

答案 1 :(得分:0)

感谢Depado, 看起来这是数据库内置的行为,与GORM无关。 ID字段是使用cockroachdb中的unique_rowid()函数生成的,该函数是由时间戳和执行插入的节点的ID组合而成的。