PostgreSQL उप-लेन-देन का समर्थन नहीं करता है, लेकिन SAVEPOINT
सुविधा आपकी आवश्यकता का प्रभावी ढंग से जवाब दे सकती है। GitHub पर विटाली टोमिलोव द्वारा वादों के माध्यम से पीजी के लिए उन्नत पहुंच परत के लिए प्रलेखन से उद्धरण :
PostgreSQL के पास नेस्टेड लेनदेन के लिए उचित समर्थन नहीं है, यह केवल लेनदेन के अंदर बचत के माध्यम से आंशिक रोलबैक का समर्थन करता है । दो तकनीकों के बीच का अंतर बहुत बड़ा है, जैसा कि आगे बताया गया है।
नेस्टेड लेन-देन के लिए उचित समर्थन का मतलब है कि एक सफल उप-लेन-देन का परिणाम वापस नहीं लुढ़का है जब उसके मूल लेनदेन को वापस ले लिया गया है। लेकिन PostgreSQL के बचत-बिंदुओं के साथ, यदि आप शीर्ष-स्तर के लेन-देन को रोल-बैक करते हैं, तो सभी इनर-सेव-पॉइंट्स का परिणाम भी वापस आ जाता है।
एक सक्रिय लेन-देन के अंदर पिछले बिंदु पर आंशिक रोलबैक के लिए Savepoint का उपयोग किया जा सकता है। उदाहरण के लिए, सहेजने के लिए और बाद में स्थापित किए गए सभी आदेशों के प्रभावों को पूर्ववत करने के लिए:
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
उपरोक्त लेनदेन 1 और 3 मान डालेगा, लेकिन 2 नहीं। SAVEPOINT
अधिक जानकारी के लिए दस्तावेज़ देखें ।