PGSQL. Возвращаемое поле в качестве результата вставки в функцию

Я могу вернуть id как результат INSERT, например

INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;

Но я не могу вернуть его и назначить переменной в мою функцию

var = INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;

или

SELECT INTO var INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;

не работают. Как я могу это сделать?

Ответ 1

Попробуйте следующее:

INSERT INTO table(id,field)
VALUES($id,$value)
RETURNING id into var;

Ответ 2

Вы также можете использовать:

var := (INSERT INTO table(id,field) VALUES($id,$value) RETURNING id);

Чтение, конечно, является личным предпочтением, но мне нравится этот синтаксис, потому что он показывает очевидное назначение.

Ответ 3

Этот вопрос был опубликован давно, но, возможно, у кого-то такая же проблема в этот момент. если вы указали идентификатор поля, введите SERIAL. Мое решение следующее:

INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;

SELECT INTO var currval('table_id_seq');