JDBC - объяснение транзакций - PullRequest
0 голосов
/ 02 декабря 2018

Ниже у меня есть фрагмент кода, который предназначен для вставки записей в таблицу publisher с использованием подготовленных операторов:

publisher(
    publisherID INT NOT NULL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    location VARCHAR(100)
);

//....

try {
      pStmt.setInt(1, 123);
      pStmt.setString(2, “Springer”);
      pStmt.setString(3, “Berlin”);
      pStmt.executeUpdate();

      con.rollback();
      con.setAutoCommit(false);

      pStmt.setInt(1, 124);
      pStmt.setString(2, “Heyne”);
      pStmt.setString(3, “München”);
      pStmt.executeUpdate();

      pStmt.setInt(1, 123);
      pStmt.setString(2, “Forum”);
      pStmt.setString(3, “Leipzig”);
      pStmt.executeUpdate();

      con.commit();

} catch(SQLException e) {
      try {
}
      con.rollback();
      con.close();

} catch(SQLException e) {}

Если этот код выполняется, будет успешно вставлена ​​только запись (124,"Heyne","München")(согласно книге).Может кто-нибудь объяснить мне, почему третий кортеж (123, "Forum", "Leipzig") не будет вставлен?

...