आप लेन-देन में SAVEPOINTs का भी उपयोग कर सकते हैं।
पाइथोनिश स्यूडोकोड को अनुप्रयोग पक्ष से दर्शाया गया है:
database.execute("BEGIN")
foreach data_row in input_data_dictionary:
database.execute("SAVEPOINT bulk_savepoint")
try:
database.execute("INSERT", table, data_row)
except:
database.execute("ROLLBACK TO SAVEPOINT bulk_savepoint")
log_error(data_row)
error_count = error_count + 1
else:
database.execute("RELEASE SAVEPOINT bulk_savepoint")
if error_count > error_threshold:
database.execute("ROLLBACK")
else:
database.execute("COMMIT")
संपादित करें:दस्तावेज़ में उदाहरण की थोड़ी भिन्नता के आधार पर psql में कार्रवाई में इसका एक वास्तविक उदाहरण यहां दिया गया है (">" द्वारा उपसर्ग SQL कथन):
> CREATE TABLE table1 (test_field INTEGER NOT NULL PRIMARY KEY);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "table1_pkey" for table "table1"
CREATE TABLE
> BEGIN;
BEGIN
> INSERT INTO table1 VALUES (1);
INSERT 0 1
> SAVEPOINT my_savepoint;
SAVEPOINT
> INSERT INTO table1 VALUES (1);
ERROR: duplicate key value violates unique constraint "table1_pkey"
> ROLLBACK TO SAVEPOINT my_savepoint;
ROLLBACK
> INSERT INTO table1 VALUES (3);
INSERT 0 1
> COMMIT;
COMMIT
> SELECT * FROM table1;
test_field
------------
1
3
(2 rows)
ध्यान दें कि मान 3 त्रुटि के बाद डाला गया था, लेकिन फिर भी उसी लेनदेन के अंदर!
SAVEPOINT के लिए दस्तावेज़ http://www.postgresql.org/docs/8.4/static/sql-savepoint.html पर है।