当存在外键约束时,如何从 MySQL table 中删除一行?
How to delete a row from a MySQL table when there is a foreign key constraint?
我试图从 table 到 http://localhost/phpmyadmin 中删除条目。
它返回以下错误:
"Cannot delete or update a parent row: a foreign key constraint fails (press
.prodstock
, CONSTRAINT fk_prodstock_prodlist1
FOREIGN KEY (item_code
) REFERENCES prodlist
(id
) ON DELETE NO ACTION ON UPDATE NO ACTION) "
我编写了 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);
}
}
}
要删除这一行,首先需要删除外键约束。
您不能删除已删除外键约束的主键数据单元。
按照这个 link: Cannot delete or update a parent row: a foreign key constraint fails
删除被其他数据引用的数据(以及由外键约束强制执行的引用)时,您必须先删除引用数据或更新引用数据以不再引用它(或设置约束)自动为您做一个或另一个)。
你可以删除约束,做你需要做的,然后重新添加约束(这在某些自引用或循环引用情况下可能是必要的);但这应该是最后的手段,因为你基本上是在告诉数据库 "let me break the data contract for a while";如果出现问题,则可能无法重新添加约束。它还在全局范围内删除了约束,允许任何客户端在此期间违反合同。
我试图从 table 到 http://localhost/phpmyadmin 中删除条目。 它返回以下错误:
"Cannot delete or update a parent row: a foreign key constraint fails (press
.prodstock
, CONSTRAINT fk_prodstock_prodlist1
FOREIGN KEY (item_code
) REFERENCES prodlist
(id
) ON DELETE NO ACTION ON UPDATE NO ACTION) "
我编写了 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);
}
}
}
要删除这一行,首先需要删除外键约束。 您不能删除已删除外键约束的主键数据单元。 按照这个 link: Cannot delete or update a parent row: a foreign key constraint fails
删除被其他数据引用的数据(以及由外键约束强制执行的引用)时,您必须先删除引用数据或更新引用数据以不再引用它(或设置约束)自动为您做一个或另一个)。
你可以删除约束,做你需要做的,然后重新添加约束(这在某些自引用或循环引用情况下可能是必要的);但这应该是最后的手段,因为你基本上是在告诉数据库 "let me break the data contract for a while";如果出现问题,则可能无法重新添加约束。它还在全局范围内删除了约束,允许任何客户端在此期间违反合同。