В статье "PostgreSQL Version 8's Transaction Savepoints Can Save Your Data (http://www.devx.com/dbzone/Article/22119)" демонстрируется пример использования новой возможности PostgreSQL 8, - контрольных точек (Savepoints) в пределах одной транзакции, с возможностью отката на определенную позицию, а не прерывание всей транзакции в целом.
Пример:
BEGIN;
INSERT INTO foo(column1,column2,column3) VALUES (1,2,0);
SAVEPOINT main_values_inserted;
INSERT INTO foo(column1,column2,column3) VALUES (1,2,1/0);
ROLLBACK TO main_values_inserted;
INSERT INTO foo(column1,column2,column3) VALUES (5,9,10);
SAVEPOINT secondary_values_inserted;
DELETE FROM foo;
ROLLBACK TO secondary_values_inserted;
COMMIT;
URL: http://www.devx.com/dbzone/Article/22119
Новость: http://www.opennet.dev/opennews/art.shtml?num=4482