根据其他 table 的自动增量在数据库中填充外键
Fill foreign key in database based on auto increment from other table
我有两个 table。第一个 table patienten 有一个自动递增的 id。
一个 "patienten" 有多个 "gebit"。 idPatient 是来自两个 tables.
的外键
患者:
gebit:
现在我想填写 "gebit" table 但我总是出错。
我的代码:
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
并尝试使用 idPatient
将记录插入 gebit
没有匹配的 patienten.idPatient
.
您需要查看您想要 insert
的 idPatient
并查看是否不正确;如果是这样修复导致错误的错误 idPatient
.
我有两个 table。第一个 table patienten 有一个自动递增的 id。 一个 "patienten" 有多个 "gebit"。 idPatient 是来自两个 tables.
的外键患者:
gebit:
现在我想填写 "gebit" table 但我总是出错。
我的代码:
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
并尝试使用 idPatient
将记录插入 gebit
没有匹配的 patienten.idPatient
.
您需要查看您想要 insert
的 idPatient
并查看是否不正确;如果是这样修复导致错误的错误 idPatient
.