代码之家  ›  专栏  ›  技术社区  ›  yegor256

如何通过Ruby PostgreSQL gem获得自动生成的行主键?

  •  1
  • yegor256  · 技术社区  · 7 年前

    我在PostgreSQL中的表如下所示:

    CREATE TABLE user (
      id SERIAL PRIMARY KEY,
      name VARCHAR(255) NOT NULL
    )
    

    我用的是Ruby pg 要向表中添加记录,请执行以下操作:

    c = PG.connect(dbname: 'foo')
    id = c.exec_params('INSERT INTO user (name) VALUES ($1)', ['Jeff']).oid_value
    

    nil 返回,而不是自动生成 id 新纪录的一部分。什么是取回它的正确方法?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Thumbnail    7 年前

    根据 docs ,如果未设置要检索的对象id,则为nil。

    您要么自己设置对象id,要么使用 returning 这样地:

    res  = conn.exec("INSERT INTO users (name) VALUES ('john') returning id")
    res[0]['id']
    #=> 1