Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在go pg ORM中将Postgresql列定义为串行_Postgresql_Go_Orm_Go Pg - Fatal编程技术网

在go pg ORM中将Postgresql列定义为串行

在go pg ORM中将Postgresql列定义为串行,postgresql,go,orm,go-pg,Postgresql,Go,Orm,Go Pg,我想在postgresql数据库中创建不同的表。现在我正在使用go pg ORM包。我已经使用以下代码找到了一种可能的方法: func set_up_tables(db *pg.DB) error { models := []interface{}{ (*User)(nil), (*Account)(nil), (*Transaction)(nil), } for _, model := range models {

我想在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列是串行的,这意味着它是唯一的,不是空的,并且是自动递增的。 有没有办法使用ORM或Go代码来实现这一点?我已经能够手动在pgadmin中更改它,但是有更多的带有ID的结构需要更改,我不想手动更改。
另外一个问题是,这是实现它的好方法吗?

如果您发现需要为您的模型使用
pg
struct标记,而不是
json
标记;PG是ORM,但不是迁移工具。您不需要使用PG来定义模式,只需要将模式映射到数据结构。

谢谢您的帮助。我不确定我是否正确理解了你的答案。我将使用什么来定义我的模式,是否有包、SQL或其他东西?对于
pg
标签,是的,我看到了,但是一个结构如何定义两个不同的用户结构?一个带有json标记用于api通信,另一个用于db通信?我找到了一个包来迁移并使用golang启动db(或多或少)。