Ответ 1
Попробуйте следующее:
INSERT INTO table(id,field)
VALUES($id,$value)
RETURNING id into var;
Я могу вернуть 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;
не работают. Как я могу это сделать?
Попробуйте следующее:
INSERT INTO table(id,field)
VALUES($id,$value)
RETURNING id into var;
Вы также можете использовать:
var := (INSERT INTO table(id,field) VALUES($id,$value) RETURNING id);
Чтение, конечно, является личным предпочтением, но мне нравится этот синтаксис, потому что он показывает очевидное назначение.
Этот вопрос был опубликован давно, но, возможно, у кого-то такая же проблема в этот момент. если вы указали идентификатор поля, введите SERIAL. Мое решение следующее:
INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;
SELECT INTO var currval('table_id_seq');