Erro PSQLexception chave estrangeira

4 respostas
MarceloAlann

Moçada bom dia

Seguinte quando faço o evento action ele envia para o banco. Exemplo uma compra

quando passo o código chave estrangeira ele estoura um erro dizendo que não existe a chave estrangeira... ele da um PSQLexception e trava o sistema... não consigo passa um código existente ele não deixa grava

alguém sabe como resolver. obs: ele está dentro de um try catch.
e dentro de um if que vai pro try.

try {
                sql = "INSERT INTO produto (nm_nome,nr_valor,ds_descricao,id_cliente,nr_data)values (?,?,?,?,?)";
                ps = conexao.prepareStatement(sql);
                ps.setString(1, fisica.getNome());
                ps.setDouble(2, prod.getValor());
                ps.setString(3, prod.getDescricao());
                ps.setInt(4, prod.getCodigo());
                ps.setDate(5, data);

                ps.execute();
                conexao.commit();

                JOptionPane.showMessageDialog(this, "Gravado com sucesso");
                jtfCodCliente.setText("");
                jtfNomeProduto.setText("");
                jtfValor.setText("");
                jtaDescricao.setText("");
                jftDataCompra.setValue("");


            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, prod.getCodigo());
                JOptionPane.showMessageDialog(this, "Houve um erro, não pode ser gravado! ");
                e.printStackTrace();
            }

4 Respostas

nel

Bom dia.

o id_cliente seria realmente o código de prod? Prod para uma variavél de uma classe produto. Mas enfim, este teu insert funciona perfeitamente se adiciona-lo diretamente no banco?
Outro detalhe, poste a Exception (stacktrace), fica mais fácil de visualizar o problema ok?

Abraços.

MarceloAlann

nel:
Bom dia.

o id_cliente seria realmente o código de prod? Prod para uma variavél de uma classe produto. Mas enfim, este teu insert funciona perfeitamente se adiciona-lo diretamente no banco?
Outro detalhe, poste a Exception (stacktrace), fica mais fácil de visualizar o problema ok?

Abraços.

Erro

org.postgresql.util.PSQLException: ERRO: inserção ou atualização em tabela "produto" viola restrição de chave estrangeira "produto_id_cliente_fkey"
  Detalhe: Chave (id_cliente)=(2) não está presente na tabela "cliente".
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:360)
        at telas.Fisica.btCadastrarActionPerformed(Fisica.java:1193)

sim, eu só testo o código pra ve se é numero mesmo na classe produto… aproveitei pra nao fazer outro…

Ele trava o sistema e eu não consigo cadastrar com um id_cliente existente.
Não sei como resolver isso.

MarceloAlann

ninguém?

pmlm

De certeza que não há erro na criação das FK da tabela produto? Isso é claramente erro de dados.

Criado 28 de janeiro de 2010
Ultima resposta 29 de jan. de 2010
Respostas 4
Participantes 3