Java JDBC savePoint

Чтение

http://download.oracle.com/javase/6/docs/api/java/sql/Savepoint.html

недостаточно четко указано, какие точки сохранения сопоставляются с перспективой базы данных.

Когда устанавливаются точки сохранения, являются ли изменения базы данных доступными для других транзакций?

Спасибо

Ответ 1

Точка сохранения указывает точку, к которой текущая транзакция может вернуться назад. Вместо того, чтобы возвращать все свои изменения обратно, он может откатить только некоторые из них. Например, предположим, что вы:

  • начать транзакцию,
  • вставьте 10 строк в таблицу,
  • установить точку сохранения,
  • вставьте еще 5 строк,
  • откат к точке сохранения,
  • зафиксировать транзакцию.

После этого таблица будет содержать первые 10 строк, которые вы вставили. Остальные 5 строк будут удалены откатом.

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

Ответ 2

Savepoints не являются функцией JDBC, они являются функцией СУБД.

В дополнение к подробному ответу Люка вы также можете прочитать о том, что в руководствах СУБД объясняется с точки зрения сохранения

http://www.postgresql.org/docs/current/static/sql-savepoint.html
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10001.htm#BABFIJGC
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0003271.html
http://msdn.microsoft.com/en-us/library/ms188378.aspx
http://dev.mysql.com/doc/refman/5.5/en/savepoint.html