Bom dia pessoas,
Tenho alguns comandos SQL a serem executados em um sistema Java aqui, porém, a dúvida é quanto ao próprio SQL: tenho uma tabela de fornecedores no MySQL que precisa ser atualizada com dados vindos de um servidor com MS SQL Server (utilizado para outra aplicação que temos aqui), já que tenho a lista correta de fornecedores somente no MS SQL Server. Então, sempre que um usuário necessitar, ele atualiza os fornecedores do MySQL (bd principal que uso nesse sistema). Para isso, criei um método em Java que faz o seguinte:
1 - Remove uma FK relacionada ao fornecedor no MySQL.
2 - Apaga todos os fornecedores cadastrados no MySQL.
3 - Busca todos os fornecedores no MS SQL Server.
4 - Insere todos os fornecedores contidos no MS SQL Server no MySQL.
A dúvida é: como tenho dezenas de milhares de registros, a requisição ao método que faz todos os passos mencionados acima demora entre 20 a 30 segundos. Com isso, pode ocorrer de um usuário pedir essa atualização (com os 4 passos mencionados acima), e antes de terminar, outro tentar a mesma atualização. Então: há a possibilidade disso ocorrer (um usuário fazer a atualização e antes de terminar esta mesma atualização ser feita por outro usuário), ou o MySQL com o auto commit ligado garante que isso nunca vai acontecer (garantindo que cada chamada no MySQL seja feita uma após a outra)?
Pensei em usar o lock table quando eu for apagar os fornecedores do MySQL, mas neste artigo http://xoops.net.br/docs/mysql/manual/ch06s07.php é informado que o lock table não funciona quando há outra sessão aberta do MySQL.
Caso eu não tenha sido muito claro, é só perguntar.
Muito obrigado desde já, abraços.