Postgres - статьи

Как мне получить значение при вставке SERIAL?


Один из способов состоит в получении следующего значения SERIAL из объекта sequence с помощью функции nextval() перед вставкой и затем вставлять это значение явно. Используйте таблицу-пример в , пример в псевдоязыке покажет как это делается:

new_id = execute("SELECT nextval('person_id_seq')"); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");

Затем вы должны также сохранить новое значение в переменной new_id для его использования в других запросах (например таких как внешний ключ для таблицы person). Заметим, что имя автоматически созданного объекта SEQUENCE будет <table>_<serialcolumn>_seq, где table и serialcolumn являются соответственно именами вашей таблицы и вашей колонки SERIAL.

В качестве альтернативы, вы можете получить назначенное значение SERIAL с помощью функции currval()

после проведения обычной операции вставки, например

execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT currval('person_id_seq')");



Содержание раздела