Savepoints nie zrobi tego, co chcesz. Kiedy wracasz do punktu zapisu, wszystko po tym punkcie jest przywracane, niezależnie od tego, czy później utworzono punkty zapisu.
Pomyśl o punktach zapisu jak o „stosie”. Nie możesz wyciągnąć czegoś ze środka stosu, musisz usunąć wszystko do żądanej warstwy.
Prawdopodobnie szukasz transakcji autonomicznych. Żadna z baz danych, z których chcesz korzystać, nie obsługuje ich. W PostgreSQL można to obejść za pomocą modułu dblink, aby nawiązać nowe połączenie z bazą danych i pracować z nią; zobacz http://www.postgresql.org/docs/current/static/ dblink.html . Nie wiem, jakie rozwiązania oferują MySQL lub SQLite, ale Google pomoże teraz, gdy znasz termin, którego szukasz.
Zalecam znalezienie sposobu na obejście tego wymagania projektowego aplikacji, jeśli to możliwe. Niech Twoja aplikacja użyje dwóch połączeń z bazą danych i dwóch transakcji, aby wykonać to, czego potrzebujesz, dbając o koordynację tych dwóch zgodnie z wymaganiami.