如何从PG :: Result获取插入行的ID

11

我运行了一个简单的插入命令:

INSERT INTO names (name) VALUES ('john')

作为响应,我得到了一个PG::Result对象。我已经研究了那些文档,但我无法从这个对象中获取所需的信息:刚刚插入的行的ID是多少?

1个回答

33
res  = conn.exec("INSERT INTO names (name) VALUES ('john') returning *")
res[0]
res[0]['id']

我使用returning *只是为了向您展示可以返回所有内容,而不仅仅是ID。但是,如果您仅需要ID或ID和其他某些列,请使用显式形式,就像您在选择列表中一样。

returning id, name

不知道你为什么会被随机踩。最好使用RETURNING id,不过除此之外这个逻辑完全正确。 - Craig Ringer
1
@Craig 是的,你说得对,我不应该忘记打开解释模式。已更新。 - Clodoaldo Neto
1
可能的原因是因为“... RETURNING”是Postgres的扩展,而不是标准SQL。这可能是一个公正的批评,但问题明确指向了Postgres,所以这绝对是最好的答案。 - cvkline

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接