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

标签 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。取回它的正确方法是什么?

最佳答案

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

您要么必须自己设置对象 ID,要么像这样使用返回:

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

关于ruby - 如何通过 Ruby PostgreSQL gem 获取自动生成的行主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069482/

相关文章:

ruby-on-rails - 无法在 mac m1 big sur 上安装 ruby​​-filemagic 0.7.2

ruby - 卸载工头

postgresql - Postgres 未分配记录,有没有办法测试空值?

python - SQL,每1000行添加相同的序号

sql - 两个数据库之间的通信

node.js - 在模型定义中添加带有 Sequelize 的 SQL CHECK 约束,而无需事后更改表?

ruby - Jekyll 构建错误

ruby - 为什么 "puts"输出在 Ruby 中缩进?

Ruby:有条件地更改数组中的最后一个元素

postgresql - 检查物化 View 的最后刷新时间