olá pessoal,
o meu caso:
- tenho uma tabela de usuarios num bd no postgres…
- o ID do usuário é do tipo serial…
- eu fazia um select pra saber qual era o máximo anterior e ao salvar assumia que era o próximo id…
código abaixo:
ResultSet rs;
Statement stm = SingletonStm.getInstance().getStatement();
rs = stm.executeQuery("select max(id) as maximo from clientes");
Integer id = new Integer(0);
while (rs.next()){
id = new Integer(rs.getInt("maximo")+1);
}
stm.executeUpdate(SQLs.inserirCliente(cliente.getRazaoSocial(), cliente.getNomeFantasia(), cliente.getNomeReduzido(),
cliente.getCnpj(), cliente.getIe(), cliente.getEndereco(), cliente.getBairro(), cliente.getCidade(), cliente.getUfId(),
cliente.getCep(), cliente.getTel1(), cliente.getTel2(), cliente.getFax(),
cliente.getEmail(), cliente.getContato(), cliente.getSite(), cliente.getCarater(), cliente.getRamoId(),
cliente.getSituacao(), cliente.getObs()));
isso funcionava para um cliente só, mas agora poderão existir mais de um acesso ao banco de uma mesma vez.
notas: tanto o Connection quanto o Statement eu pego por meio de Singleton.
uma pequena dúvida:
como faço pra saber qual o id do usuário foi inserido no banco?
pesquisei um pouco, mas num entendi direito qual o LOCK que é indicado pro meu caso…
estou pensando em inserir o usuario e dar um "SELECT MAX(id) FROM USUARIOS"
mas pra isso preciso garantir que ninguem mais ira inserir ninguem nesse espaço de tempo…
obrigado.