Похоже, Предложение Sentinel из предложения PostgreSQL RETURNING - это самое легкое для вас использование.
Вас также может интересовать, как класс ORM OpenERP управляет значениями идентификаторов для новых записей. Вот фрагмент из метода orm.create()
:
# Try-except added to filter the creation of those records whose filds are readonly.
# Example : any dashboard which has all the fields readonly.(due to Views(database views))
try:
cr.execute("SELECT nextval('"+self._sequence+"')")
except:
raise except_orm(_('UserError'),
_('You cannot perform this operation. New Record Creation is not allowed for this object as this object is for reporting purpose.'))
id_new = cr.fetchone()[0]
Используется последовательность для каждой таблицы для генерации нового значения идентификатора. Имя последовательности по умолчанию равно имени таблицы плюс «_id_seq», как вы можете видеть в orm.__init__()
метод .
Я не знаю, чего вы пытаетесь достичь, но вам может быть проще использовать orm
класс , чтобы создать запись для вас и позволить ей позаботиться о деталях. Например, метод создания возвращает значение идентификатора новой записи.