根据其他 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.

您需要查看您想要 insertidPatient 并查看是否不正确;如果是这样修复导致错误的错误 idPatient.