gpt4 book ai didi

java - 填充数据库中的外键问题

转载 作者:行者123 更新时间:2023-11-29 00:59:45 26 4
gpt4 key购买 nike

Deleting previous tuples from flights
Error: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExcepti
on: Duplicate entry 'AAH196' for key 'PRIMARY'
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Dupl
icate entry 'AAH196' for key 'PRIMARY'

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at Populate.Populate_flights(Populate.java:94)
at Populate.<init>(Populate.java:36)
at Populate.main(Populate.java:28)

Deleting previous tuples from reservationsInserting Data into table building Err
or 2: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
: Cannot add or update a child row: a foreign key constraint fails (`cs585hw3`.`
reservations`, CONSTRAINT `reservations_ibfk_1` FOREIGN KEY (`flight_no`) REFERE
NCES `flights` (`flight_no`))
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cann
ot add or update a child row: a foreign key constraint fails (`cs585hw3`.`reserv
ations`, CONSTRAINT `reservations_ibfk_1` FOREIGN KEY (`flight_no`) REFERENCES `
flights` (`flight_no`))

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at Populate.Populate_reservations(Populate.java:126)
at Populate.<init>(Populate.java:37)
at Populate.main(Populate.java:28)

我有两张 table 。 flights.data 和 reservations.data。我正在尝试通过 jdbc 填充表。填充它时,出现上述错误。

reservations 到 flights 有一个外键引用。我必须先从辅助表中删除记录。这意味着,我应该在从航类中删除之前从预订中删除记录。那是对的吗?我检查了我的表,预订表有一个外键。所以我必须先从这个表中删除数据。

但是我该如何执行这个任务呢?

在预约功能中,我是这样做的,

Statement s = conn.createStatement();

s.executeUpdate("DELETE FROM reservations");

在表函数中,它是一样的,相反,我使用了从表中删除。请告诉我如何修复它。

最佳答案

您知道要在航类中删除的行的主键吗?假设它是 5。

long flightId = 5;
Statement s = c.prepareStatement("DELETE FROM reservations WHERE flight_id = ?");
s.setLong(1,flightId);
s.executeUpdate();

届时,您可以删除您的航类,因为不会有任何预订指向它。

s.prepareStatement("DELETE FROM flights WHERE id = ?");
s.setLong(1, flightId);
s.executeUpdate();

编辑:如果你想从两个表中删除所有日期:

Statement s = c.prepareStatement("DELETE FROM reservations");
s.executeUpdate();

s = c.prepareStatement("DELETE FROM flights");
s.executeUpdate();

关于java - 填充数据库中的外键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com