我有两个功能:
public void Populate_flights()
public void Populate_reservations()
Run Code Online (Sandbox Code Playgroud)
航班和预订是两个表。其中一个条目即航班号。在预订表中。所以它是一个外键。
现在,我需要通过 jbdc 填充数据库。所以我使用:在 public void Populate_reservations() 函数中:
Statement s = conn.createStatement();
s.executeUpdate("DELETE FROM reservations");
Run Code Online (Sandbox Code Playgroud)
public void Populate_flights() -:
Statement s = conn.createStatement();
s.executeUpdate("DELETE FROM flights");
Run Code Online (Sandbox Code Playgroud)
所以这样,在填充数据库之前,我之前的所有条目都被删除了,没有多余的数据。由于预订表中有一个外键,我不能先从航班中删除条目。我必须先从预订中删除条目。但是预订功能是在飞行功能之后调用的。所以我将如何使它删除所有条目。
所以它应该是这样的:
Statement s = conn.createStatement();
s.execute("SET FOREIGN_KEY_CHECKS=0");
s.executeUpdate("DELETE FROM flights");
s.execute("SET FOREIGN_KEY_CHECKS=1");
Run Code Online (Sandbox Code Playgroud)
您可以在 MySQL 中临时禁用外键检查以执行如果启用这些检查将会失败的操作:
// Disable foreign keys check
Statement stmt = conn.createStatement();
stmt.execute("SET FOREIGN_KEY_CHECKS=0");
stmt.close();
// Do your stuff
// Enable foreign keys check
Statement stmt = conn.createStatement();
stmt.execute("SET FOREIGN_KEY_CHECKS=1");
stmt.close();
Run Code Online (Sandbox Code Playgroud)
请注意,这是每个连接的设置,因此您必须使用相同的conn对象完成所有工作。
| 归档时间: |
|
| 查看次数: |
14637 次 |
| 最近记录: |