2013-07-25 5 views
9

Я провел простую команду вставки:Как получить идентификатор строки, вставленной из PG :: Результат

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

В ответ я получаю PG::Result object. Я копал эти документы, но я не могу выжать из этого объекта информацию, которая мне нужна: какой идентификатор строки, которую я только что вставил?

ответ

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

Я использовал returning * только чтобы показать, вы можете вернуть все не только удостоверение личности. Но очевидно, что если вам нужен только идентификатор или идентификатор и другой столбец, используйте явную форму так же, как в списке выбора.

returning id, name 
+0

Не знаю, почему вы получили случайный снимок. Лучше использовать 'RETURNING id', но в остальном это имеет смысл. –

+1

@Craig Да, вы правы, и я никогда не должен забывать включить режим объяснения. Обновлено. –

+1

Возможно, это было связано с тем, что «... RETURNING» является расширением Postgres, а не стандартным SQL. Это может быть справедливая критика, но вопрос конкретно относится к Postgres, так что это, безусловно, лучший ответ. – cvkline

Смежные вопросы