我有两张桌子。第一个患者表具有一个自动增量ID。
一个“患者”具有多个“ gebit”。 idPatient是两个表中的外键。
患者:
gebit:
现在,我想填写“ gebit”表,但我不断出错。
我的代码:
public void addTandenToDatabase(int fdi, String voorstelling, String toestand) {
String insertSql = "insert into gebit(fdi, voorstelling, toestand) values (:fdiVal, :voorstellingVal, :toestandVal)";
try (Connection con = sql2o.open()) {
con.setRollbackOnException(false);
con.createQuery(insertSql)
.addParameter("fdiVal", fdi)
.addParameter("voorstellingVal", voorstelling)
.addParameter("toestandVal", toestand)
.executeUpdate();
}
}
我得到的错误:
我尝试了第二种方法,在gebit中向idPatient添加一个值:
public void addTandenToDatabase(int fdi, String voorstelling, String toestand) {
String insertSql = "insert into gebit(idPatient, fdi, voorstelling, toestand) values (:idVal, :fdiVal, :voorstellingVal, :toestandVal)";
try (Connection con = sql2o.open()) {
con.setRollbackOnException(false);
con.createQuery(insertSql)
.addParameter("fdiVal", fdi)
.addParameter("idVal", fdi)
.addParameter("voorstellingVal", voorstelling)
.addParameter("toestandVal", toestand)
.executeUpdate();
}
}
但这给了我这个错误:
Error in executeUpdate, Cannot add or update a child row: a foreign key constraint fails (`toondoesselaere`.`gebit`, CONSTRAINT `idPatient` FOREIGN KEY (`idPatient`) REFERENCES `patienten` (`idPatient`) ON DELETE NO ACTION ON UPDATE NO ACTION)
最佳答案
您将foreign key
破坏为gebit.idPatient
references
patienten.idPatient
,然后尝试使用gebit
没有匹配的idPatient
将记录插入patienten.idPatient
。
您需要查看要idPatient
的insert
并查看是否不正确。如果是这样,请修复导致错误的idPatient
错误。