Gente quando eu tentei excluir uma linha da minha JTable o NetBeans estourou uma excessão onde diz que existe uma foreing key violada, por causa de um Update ou Delete.
Estou tentando deletar uma linha da tabela, mas não sei pq ta gerando essa excessão!
codigo do evento:
private void btnExcluirLinhaActionPerformed(java.awt.event.ActionEvent evt) {
if(tabGruposAssuntos.getValueAt(tabGruposAssuntos.getSelectedRow(), tabGruposAssuntos.getSelectedColumn()) == null){
return;
}
else if(tabGruposAssuntos.getRowCount() == 1){
JOptionPane.showMessageDialog(null, "Não exclua todas linhas da tabela","Cuidado", JOptionPane.WARNING_MESSAGE);
}
else if(tabGruposAssuntos.getSelectedRow()!= -1){
gt.excluiRegistro("DELETE FROM fn_grupo WHERE grupo = "+ tabGruposAssuntos.getValueAt(tabGruposAssuntos.getSelectedRow(), 0) + ";");
modelo.removeRow(tabGruposAssuntos.getSelectedRow());
tabGruposAssuntos.setModel(modelo);
posicionaJ ++;
}
else{
JOptionPane.showMessageDialog(null, "Uma linha da tabela deve estar selecionada", "Cuidado!", JOptionPane.WARNING_MESSAGE);
}
}
Erro:
org.postgresql.util.PSQLException: ERROR: update or delete on table "fn_grupo" violates foreign key constraint "fngrupoccusto_grupo_fkey" on table "fn_grupo_ccusto"
Detalhe: Key (grupo)=(10000) is still referenced from table "fn_grupo_ccusto".
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:343)
at BancoDeDados.InstanciaBanco.executaSql(InstanciaBanco.java:39)
at BancoDeDados.GerenciaTabelas.excluiRegistro(GerenciaTabelas.java:52)
at Interface.Financeiro.Tabelas.TabGruposAssuntos.btnExcluirLinhaActionPerformed(TabGruposAssuntos.java:134)
at Interface.Financeiro.Tabelas.TabGruposAssuntos.access$100(TabGruposAssuntos.java:13)
at Interface.Financeiro.Tabelas.TabGruposAssuntos$3.actionPerformed(TabGruposAssuntos.java:84)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Vlw galera!