2009-08-26 4 views
1

Я хочу получить идентификатор текущей вставленной строки после выполнения запроса на ввод.Postgresql/php

p.s .: Я использую базу данных postgresql.

ответ

0

В PG7 было pg_last_oid, документы там объясняют довольно четко, как получить последний идентификатор из более новой версии PG.

+0

, когда этот запрос выполняется «INSERT INTO контактов (название, имя, JOB_TITLE, телефон, электронная почта) VALUES ('TES', 'тест S/W ',' 0102365478 ',' [email protected] ',' 123 ') RETURNING id; " Ошибка: Ошибка: синтаксическая ошибка при или около "RETURNING" – 2009-08-26 09:53:28

+0

Я думаю, что это должен быть комментарий к ответам garrow или Milen A. Radev – RaYell

+0

Извините, что это конфликт. – 2009-08-26 10:02:17

3

Если мы предположим, что «ид» вы имеете в виду столбец, который является первичным ключом, а также объявлен SERIAL, то вам нужно добавить RETURNING на заявление INSERT:

INSERT INTO <table> (...) VALUES (...) RETURNING id; 

А в PHP вы можете обращаться это утверждение как обычный запрос, который возвращает одну строку.

+0

, когда этот запрос выполняется «INSERT INTO contacts (название, имя, job_title, телефон, электронная почта) VALUES ('tes', 'test s/w', '0102365478', '[email protected]', '123') RETURNING id; " это приводит к ошибке: запрос не выполнен: ERROR: ошибка синтаксиса при или около «RETURNING» – 2009-08-26 09:59:26

+0

Скорее всего, вы используете более старую версию (<8.2) Postgres, которая не поддерживает RETURNING. Если возможно, обновите. –

+0

Есть ли какие-либо решения? Я попробовал метод currval(), но эта ошибка появилась: «Ошибка завершена: ERROR: currval последовательности« contacts_id_seq »еще не определен в этом сеансе» – 2009-08-26 11:30:32