Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Reversão de transação aninhada entre dois pontos de salvamento?


Os pontos de salvamento não farão o que você deseja. Quando você reverte para um ponto de salvamento, tudo depois desse ponto de salvamento é revertido, independentemente de pontos de salvamento posteriores terem sido criados.

Pense nos pontos de salvamento como uma "pilha". Você não pode puxar algo do meio da pilha, você tem que remover tudo até a camada desejada.

Você provavelmente está procurando por transações autônomas. Nenhum dos bancos de dados que você deseja usar os suporta. No PostgreSQL você pode contornar isso usando o módulo dblink para fazer uma nova conexão com o banco de dados e trabalhar com ele; veja http://www.postgresql.org/docs/current/static/ dblink.html . Não sei quais soluções MySQL ou SQLite oferecem, mas o Google vai ajudar agora que você conhece o termo que está procurando.

Eu recomendo que você encontre uma maneira de contornar esse requisito de design de aplicativo, se possível. Faça com que seu aplicativo use duas conexões de banco de dados e duas transações para fazer o que você precisa, cuidando da coordenação das duas conforme necessário.