Я хочу получить идентификатор текущей вставленной строки после выполнения запроса на ввод.Postgresql/php
p.s .: Я использую базу данных postgresql.
Я хочу получить идентификатор текущей вставленной строки после выполнения запроса на ввод.Postgresql/php
p.s .: Я использую базу данных postgresql.
В PG7 было pg_last_oid, документы там объясняют довольно четко, как получить последний идентификатор из более новой версии PG.
Если мы предположим, что «ид» вы имеете в виду столбец, который является первичным ключом, а также объявлен SERIAL, то вам нужно добавить RETURNING на заявление INSERT:
INSERT INTO <table> (...) VALUES (...) RETURNING id;
А в PHP вы можете обращаться это утверждение как обычный запрос, который возвращает одну строку.
, когда этот запрос выполняется «INSERT INTO contacts (название, имя, job_title, телефон, электронная почта) VALUES ('tes', 'test s/w', '0102365478', '[email protected]', '123') RETURNING id; " это приводит к ошибке: запрос не выполнен: ERROR: ошибка синтаксиса при или около «RETURNING» – 2009-08-26 09:59:26
Скорее всего, вы используете более старую версию (<8.2) Postgres, которая не поддерживает RETURNING. Если возможно, обновите. –
Есть ли какие-либо решения? Я попробовал метод currval(), но эта ошибка появилась: «Ошибка завершена: ERROR: currval последовательности« contacts_id_seq »еще не определен в этом сеансе» – 2009-08-26 11:30:32
Из документации Postgres
Insert a single row into table distributors, returning the sequence number generated by the DEFAULT clause:
INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets') RETURNING did;
http://www.postgresql.org/docs/8.3/interactive/sql-insert.html
, когда этот запрос выполняется «INSERT INTO контактов (название, имя, JOB_TITLE, телефон, электронная почта) VALUES ('TES', 'тест S/W ',' 0102365478 ',' [email protected] ',' 123 ') RETURNING id; " Ошибка: Ошибка: синтаксическая ошибка при или около "RETURNING" – 2009-08-26 09:53:28
Я думаю, что это должен быть комментарий к ответам garrow или Milen A. Radev – RaYell
Извините, что это конфликт. – 2009-08-26 10:02:17