在更新

时间:2017-08-20 21:25:27

标签: mysql sql database

我在更新表格中的信息时遇到问题。有问题tables

的方案

当我将信息插入表Zamestnanec时,首先我将信息插入表AdresaKontaktyUzivatel。然后我SELECT所有三个表的新行的主键并保存到变量中,并且最后一次使用此sql命令将信息插入表Zamestnanec

PreparedStatement pst = db.CreatePreparedStatement("INSERT INTO autoservis.zamestnanec"
                    + "(idZamestnanec,"
                    + "Jmeno,"
                    + "Prijmeni,"
                    + "RodneCislo,"
                    + "Adresa_idAdresa,"
                    + "Kontakty_idKontakty,"
                    + "Uzivatel_idUzivatel)"
                    + "VALUES"
                    + "(null,?,?,?,?,?,?)");
            pst.setString(1, jTextFieldJmeno.getText());
            pst.setString(2, jTextFieldPrijmeni.getText());
            pst.setDouble(3, Double.parseDouble(jTextFieldRodneCislo.getText()));
            pst.setInt(4, idAdresa);
            pst.setInt(5, idKontakt);
            pst.setInt(6, idUzivatel);
            pst.execute();

当我用相同的Adresa插入两个Zamestnanec并想要删除表Zamestnanec中的这一行之一并删除子表Adresa中的行。然后mysql返回

  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:   无法删除或更新父行:外键约束失败   (autoservis.zamestnanec,CONSTRAINT fk_Zamestananec_Adresa1 FOREIGN   KEY(Adresa_idAdresa)REFERENCES adresa(idAdresa)ON DELETE NO ACTION   ON UPDATE NO ACTION)

那没关系,但是当我在子表中更新时,行中的更改信息没有问题。但是mysql应该返回相同的错误任何想法?感谢

1 个答案:

答案 0 :(得分:0)

从Parenttable中删除之前从Childtable中删除。这样就可以防止错误。

如果您希望所有查询都是原子的(全部或全部)使用事务。