Insert se nao existir

2 respostas
L

Boas pessoal,

Gostaria de fazer um insert ao banco de dados apenas se o valor que quero colocar nao existir.
Estou a inserir assim :

String query = "INSERT INTO SSERS (NUM, CONTA, NOME )"+
                         "VALUES (?, ?, ?)";          
       try {

           Connection conn = DriverManager.getConnection("jdbc:as400:Meu_Server/Database,"User", "Pass");
           PreparedStatement stmt =  conn.prepareStatement(query);

     
                 
                 stmt.setString(1, numero);
                 stmt.setString(2, conta);
                 stmt.setString(3, nome);

            
             stmt.execute();

O problema é que assim entram dados repetidos. Gostaria de colocar so dados diferentes. Gostaria que as minhas chavez unicas fossem o NUM e CONTA. se ele verificar que ja existe um dado com a mesma conta e numero ele rejeita com um erro tipo “Cliente ja Cadastrado”

Obrigado !

2 Respostas

doug

Olá

Ao meu ver existe 2 saidas, a mais elegante e a menos elegante;
 1) Saida elegante: colocar contraints no seu banco de dados. Assim vai ocorrer uma exception dai vc trata ela, da forma que achar melhor na estrutura da sua aplicação.

2) Menos elegante: antes de fazer insert, faz um select para verificar a existencia da informação, caso retornar algum registro nao faz o insert, caso no retornar pode fazer o insert...

Espero ter ajudado
Flwssss

maquiavelbona

Dê uma olhada em: http://www.xaprb.com/blog/2005/09/25/insert-if-not-exists-queries-in-mysql/

Até!

Criado 18 de julho de 2009
Ultima resposta 18 de jul. de 2009
Respostas 2
Participantes 3