我有两张桌子。第一个表patienten有一个自动增量ID。 一个“patienten”有多个“gebit”。 idPatient是两个表中的外键。
patienten:
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)
答案 0 :(得分:1)
您将foreign key
与gebit.idPatient
references
patienten.idPatient
分开,然后尝试在gebit
中插入一条记录idPatient
没有匹配patienten.idPatient
。
您需要查看idPatient
insert
,查看是否错误;如果是这样,修复错误导致的错误idPatient
。