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

nbnkbykc  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(360)

我试图通过删除表中的一个条目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);
        }
    }

    }
vu8f3i0k

vu8f3i0k1#

要删除此行,首先需要删除外键约束。如果已删除外键约束,则不能删除主键数据单元。遵循此链接:无法删除或更新父行:外键约束失败

aoyhnmkz

aoyhnmkz2#

删除由其他数据引用的数据(以及由外键约束强制执行的引用)时,必须首先删除引用数据或更新引用数据以不再引用它(或将约束设置为自动执行其中一项或另一项操作)。
您可以删除约束,执行需要执行的操作,然后将约束添加回(在某些自引用或循环引用情况下可能需要这样做);但这应该是最后的手段,因为您基本上是在告诉数据库“让我打破数据契约一段时间”;如果出了问题,就有可能无法重新添加约束。它还全局删除了约束,允许任何客户机在此期间违反合同。

相关问题