代码之家  ›  专栏  ›  技术社区  ›  Dilanka Dias

当存在外键约束时,如何从MySQL表中删除行?

  •  -2
  • Dilanka Dias  · 技术社区  · 6 年前

    我试图通过从表中删除an条目 http://localhost/phpmyadmin 。 它返回了以下错误:

    “无法删除或更新父行:外键约束失败( press prodstock 限制 fk_prodstock_prodlist1 外键( item_code )参考文献 prodlist ( id )删除时无操作更新时无操作)”

    我编写了一段JAVA代码,将其从NetBeans中删除:

     private void loginBut46ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (prodlist.getSelectedRowCount() == 0) {
    
                JOptionPane.showMessageDialog(rootPane, "Select Raw to View!");
    
            } else {
                int r = prodlist.getSelectedRow();
                String id = prodlist.getValueAt(r,0).toString();
                String item_code = prodlist.getValueAt(r,1).toString();
            try {
               DB.DB.statement("delete from prodlist where id = '"+id+"' ");
                DB.DB.statement("delete from prodstock where item_code='"+item_code+"'");
            } catch (Exception ex) {
                Logger.getLogger(Stock.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        }  
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Uueerdo    6 年前

    删除由其他数据引用的数据(以及由外键约束强制执行的引用)时,必须先删除引用数据,或更新引用数据以不再引用它(或将约束设置为自动执行其中一项或另一项)。

    能够 移除约束,执行需要执行的操作,然后将约束添加回(在某些自引用或循环引用情况下可能需要);但这应该是最后的手段,因为您基本上是在告诉数据库“让我暂时打破数据契约”;如果出现问题,可能无法重新添加约束。它还全局删除了约束,允许任何客户机在此期间违反合同。

        2
  •  1
  •   Ali Hasan    6 年前

    要删除此行,首先需要删除外键约束。 如果已删除外键约束,则无法删除主键数据单元。 点击此链接: Cannot delete or update a parent row: a foreign key constraint fails