Savepoints kommer inte att göra vad du vill. När du rullar tillbaka till en räddningspunkt rullas allt efter den räddningspunkten tillbaka, oavsett om senare räddningspunkter skapades.
Tänk på räddningspunkter som en "stack". Du kan inte dra ut något från mitten av stapeln, du måste ta bort allt ner till det lager du vill ha.
Du letar förmodligen efter autonoma transaktioner. Ingen av databaserna du vill använda stöder dem. I PostgreSQL kan du komma runt detta med dblink-modulen för att skapa en ny anslutning till databasen och arbeta med den; se http://www.postgresql.org/docs/current/static/ dblink.html . Jag vet inte vilka lösningar MySQL eller SQLite erbjuder, men Google hjälper dig nu när du vet vilken term du letar efter.
Jag rekommenderar att du hittar ett sätt att kringgå detta applikationsdesignkrav om möjligt. Låt din applikation använda två databasanslutningar och två transaktioner för att göra det du behöver, och ta hand om att samordna de två efter behov.