• Авторизация


serial только что вставленной записи. 06-07-2007 12:09 к комментариям - к полной версии - понравилось!


выдержки из официального фака
Как мне получить значение при вставке SERIAL?

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

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

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

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

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

Не может ли получиться так, что использование currval() и nextval() приведет к зациклированию с другими пользователями?

Нет. currval() возвращает текущее значение, назначенное вашей сессией, а не другими сессиями.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник serial только что вставленной записи. | oOoXiD - Сетевик-затейник oOoXiD | Лента друзей oOoXiD / Полная версия Добавить в друзья Страницы: раньше»