我在更新表格中的信息时遇到问题。有问题tables
的方案当我将信息插入表Zamestnanec
时,首先我将信息插入表Adresa
,Kontakty
和Uzivatel
。然后我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应该返回相同的错误任何想法?感谢
答案 0 :(得分:0)
从Parenttable中删除之前从Childtable中删除。这样就可以防止错误。
如果您希望所有查询都是原子的(全部或全部)使用事务。