Мой основной идентификатор GORM устанавливается на 18-значный номер, как я могу заставить этот номер начать с 1 - PullRequest
0 голосов
/ 13 ноября 2018

Я использую 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

Можно ли заставить этот идентификатор начинаться с 1 и увеличиваться оттуда?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Спасибо, Депадо, Похоже, это встроено в базу данных и не имеет отношения к GORM. Поля идентификатора генерируются с помощью функции unique_rowid () в cockroachdb, которая генерируется комбинацией метки времени и идентификатора узла, выполняющего вставку.

0 голосов
/ 27 ноября 2018

Вы используете gorm.Model и определяете свой собственный первичный ключ. Поэтому я предполагаю, что gorm автоматически решит, что вы пытаетесь использовать составной первичный ключ , поскольку ваша структура на самом деле выглядит следующим образом:

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"`
}

Короче говоря, посмотрите там некоторую документацию по gorm.Model

...