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

时间:2018-08-29 04:27:09

标签: ruby postgresql

我在PostgreSQL中的表如下:

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

我正在使用Ruby pg gem向表中添加记录:

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

我找回了nil,而不是新记录的自动生成的id。找回它的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

根据docs,如果未设置您要检索的对象ID,则为零。

您要么自己设置对象ID,要么像这样使用returning

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