2016-01-19 3 views
0

Я хочу найти запись конкретной таблицы, чье конкретное поле изменено вчера, а также найти текущее значение поля и старого значения.Как извлечь старую запись из архивной таблицы в web2py?

Например, у меня есть company таблица с полями id, name и address. Я хочу отслеживать поле name и найти текущее значение и старое значение, если оно изменено. Я займусь этим в конце дня.

В web2py, если мы редактируем запись, тогда в таблице архива создаются две строки, первая из которых содержит старые данные, а вторая - текущая запись. Могу ли я предположить, что старая строка и текущая строка записей всегда связаны друг с другом? Или между ними может быть ряд? web2py использует блокировки при записи в архивную таблицу? Объясните, как создаются архивные записи.

Пожалуйста, помогите!

ответ

0

Заблокирует или не заблокирует, я не думаю, что вы должны использовать запрос только для поля имени, а затем вернуться к одной строке и получить старое имя. Это может создать проблемы для вас, если имя не уникально (что обычно не является).

Лучший способ сделать это - сохранить идентификатор таблицы компании в таблице архива и использовать это для запроса старого имени.

Так что ваш стол архива должны выглядеть так,

| id | name | company_id | 

Затем с помощью запроса на архивной таблице вы можете получить все строки для данного company_id:

rows = (db.archive.company_id == company_id).select() 

И, чтобы получить старое имя вам нужно будет что-то сделать,

old_name = rows[len(rows) - 1].name 

Это вернет вам фамилию, u изначально искали. Надеюсь, это поможет.

+0

Я использую таблицу архива, сгенерированную web2py, а не мою собственную таблицу архива. см. [Record Versioning] (http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=archive#Record-versioning) –