【发布时间】:2016-01-02 06:25:00
【问题描述】:
这是GUI 程序,当单击按钮时它会删除该行。但问题是它会出现这样的异常
Cannot delete or update a parent row: a foreign key constraint fails (`sakila`.`film_actor`, CONSTRAINT `fk_film_actor_actor` FOREIGN KEY (`actor_id`) REFERENCES `actor` (`actor_id`) ON UPDATE CASCADE)
我不知道这是什么意思,但我想删除该行有什么方法可以解决这个问题。
这是模式和表的快照。
代码:
public class GUI extends JFrame {
public GUI() {
super("Frame");
setLayout(new FlowLayout());
JButton b1 = new JButton("Click Delete Row");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/cinema", "hussnain", "toot");
String query = "delete from sakila.actor where actor_id=3";
PreparedStatement pre = conn.prepareStatement(query);
pre.executeUpdate();
JOptionPane.showMessageDialog(null, "Query Executed");
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, e1.getMessage());
e1.printStackTrace();
}
}
});
add(b1);
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
}
主要方法
public class Main {
public static void main(String[] args) {
GUI obj = new GUI();
}
}
【问题讨论】:
-
我相信你有一个对另一个表的引用,你需要先删除它。检查表“film_actor”
-
显示您的数据库架构。看来该行被具有外键约束的另一条记录引用(这意味着它不能在另一个存在时被删除)
-
@JamesWierzba 我上传了一个架构快照,但是如何在 java 中做到这一点
-
这与 Swing 无关。这是您的 SQL 语句的问题。 (已移除 Swing 标签)。
-
您是否希望您的外键不是
ON DELETE CASCADE?您可能需要考虑添加它。