2010-04-18 2 views
3

Есть ли способ откат к конкретной отправной точке. Im ищет что-то вроде этого.Откат к определенному моменту с PostgreSQL

Начало конкретной_точки;

Теперь после этого в другом приложении, подключенном к САМОЙ логин, будут вставлены & удаленные данные (webservices with crud operations) в течение примерно 2 минут, выполняющих тесты. Каждый вызов webservice объявляется транзакцией с Spring Ws.

После этого я хочу откат к конкретной_точке, чтобы иметь чистую базу данных в известном предыдущем состоянии.

Я думал, что ROLLBACK TO SAVEPOINT foo; было решением, но не к сожалению?

Любая идея?

Конфигурация: PostgreSQL 8.4/Windows XP

С уважением

ответ

0

Это возможно только тогда, когда все ваши приложения совместно использовать одно соединение с базой данных. Они не могут создавать свою собственную связь. Вы можете сделать это с пулом соединений, просто разрешите одно соединение. Если кто-то может создать свое собственное соединение, игра закончится. Различные соединения не могут использовать одну и ту же транзакцию.

1

Два быстрых варианта:

  1. Создать временную базу данных, используя первичную базу данных в качестве шаблона, падение временной базы данных после завершения тестирования.
  2. Table Log может быть полезен при реализации чего-либо.
+0

+1 для временной базы данных, но проводить тесты по временным - не в базе данных. – Tometzky

0

SAVEPOINTs только работает внутри одной транзакции, что означает одно соединение.

Вы можете создать что-то из PITR, что позволяет восстановить до определенного момента времени. Вам понадобится базовая резервная копия для работы и архивные файлы журналов, но это позволит вам переходить к конкретному моменту времени. Это не так «удобно», как вы, кажется, ищете, но это работает.

Смежные вопросы