Make Insert with foreign key

Asked

Viewed 150 times

-1

I am trying to make an insert with foreign key but I am not succeeding, giving the following error

GRAVE: null
org.postgresql.util.PSQLException: ERROR: insert or update on table "agendamento" violates foreign key constraint "fk_cliente"
  Detalhe: Key (id_cliente)=(0) is not present in table "cliente".
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2310)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2023)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:217)
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:421)
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:166)
    at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:159)
    at Model.DAO.AgendamentoDAO.insert(AgendamentoDAO.java:45)
    at Controller.AgendaController.agendar(AgendaController.java:79)
    at View.Agenda.ButtonAgendarActionPerformed(Agenda.java:180)
    at View.Agenda.access$300(Agenda.java:22)
    at View.Agenda$4.actionPerformed(Agenda.java:148)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Follow my method of Insert:

 public void insert(Agendamento agendamento) throws SQLException{

    String sql = "insert into agendamento(id_cliente,id_servico,valor,data,observacao)values('" + agendamento.getCliente().getId() + "','" + agendamento.getServico().getId() + "','" + agendamento.getValor() + "','" + agendamento.getData() + "','" + agendamento.getObservacao() + "')";

    PreparedStatement statement = connection.prepareStatement(sql);
    statement.execute();
    connection.close();
}

2 answers

1

The first two lines already say what the problem is:

org.postgresql.util.PSQLException: ERROR: insert or update on table "agendamento" violates foreign key constraint "fk_cliente" Detalhe: Key (id_cliente)=(0) is not present in table "cliente". at 

In other words, you are trying to include in the schedule table a client id that does not exist in the client table, so you are stopping in the referential restriction. Another thing that may be, I already forgot to configure the id as the primary key and when inserting in a table that used as a foreign key gave an error similar to that yours

-1

Very generic what may be causing this, in addition to little information from your code. Do a debug and see where it is popping. see if you’re not sending any null value in the post where you shouldn’t.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.