-1

我想在 postgresql 数据库中创建不同的表。现在我正在使用 go-pg ORM 包。我已经使用以下代码找到了一种可能的方法:

func set_up_tables(db *pg.DB) error {
    models := []interface{}{
        (*User)(nil),
        (*Account)(nil),
        (*Transaction)(nil),
    }

    for _, model := range models {
        err := db.Model(model).CreateTable(&orm.CreateTableOptions{
            IfNotExists: true,
        })
        if err != nil {
            return err
        }
    }
    return nil
}

现在让我们看看我这样定义的用户结构:

type User struct {
    UserId    string `json:"userId"`
    Email     string `json:"emailAddress"`
    Firstname string `json:"firstName"`
    Lastname  string `json:"lastName"`
    Address   string `json:"address"`
}

我希望 userId Column 是一个 Serial,这意味着它是唯一的,而不是 null,并且是自动递增的。有没有办法使用 ORM 或 Go 代码来做到这一点?我已经能够在 pgadmin 中手动更改它,但是还有更多带有 Id 的结构应该更改,我不想手动更改它。作为另一个问题,这是实现它的好方法吗?

4

1 回答 1

1

如果您查看文档,您会发现您需要pg为模型使用结构标签,而不是json标签;并且 PG 是 ORM,但不是迁移工具。您不使用 PG 来定义您的架构,而只是将您的架构映射到您的数据结构。

于 2021-05-10T18:52:58.347 回答