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

时间:2018-05-09 20:50:34

标签: java mysql netbeans foreign-keys wampserver

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

"无法删除或更新父行:外键约束失败(pressprodstock,CONSTRAINT fk_prodstock_prodlist1 FOREIGN KEY(item_code )参考prodlistid)暂停更新没有采取行动的行动)"

我编写了一个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);
        }
    }

    }  

1 个答案:

答案 0 :(得分:0)

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

可以删除约束,做你需要做的事情,然后再添加约束(在一些自引用或循环引用的情况下可能是必要的);但这应该是最后的手段,因为你基本上是在告诉数据库"让我打破数据合同一段时间&#34 ;;如果出现问题,可能无法添加约束。它还全局删除约束,允许任何客户在此期间违反合同。