Interface Savepoint cung cấp kiểm soát transaction bổ sung. Hầu hết DBMS hiện đại hỗ trợ save points như Oracle PL/SQL.
Khi thiết lập save point, bạn xác định điểm rollback logic trong transaction. Nếu lỗi xảy ra sau save point, dùng rollback để hoàn tác tất cả thay đổi hoặc chỉ thay đổi sau save point.
Đối tượng Connection có hai phương thức mới giúp quản lý save points:
setSavepoint(String savepointName): Định nghĩa save point mới. Trả về đối tượng Savepoint.
releaseSavepoint(Savepoint savepointName): Xóa Savepoint. Yêu cầu đối tượng Savepoint làm tham số (thường do setSavepoint() tạo ra).
Có phương thức rollback(String savepointName) rollback công việc về save point chỉ định.
Ví dụ
try {
// Giả sử connection object conn hợp lệ
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
// Thiết lập Savepoint
Savepoint savepoint1 = conn.setSavepoint("Savepoint1");
String SQL = "INSERT INTO Employees " + "VALUES (106, 20, 'Rita', 'Tez')";
stmt.executeUpdate(SQL);
// Gửi câu SQL sai cú pháp gây lỗi
String SQL = "INSERTED IN Employees " + "VALUES (107, 22, 'Sita', 'Tez')";
stmt.executeUpdate(SQL);
// Nếu không lỗi, commit thay đổi
conn.commit();
} catch(SQLException se){
// Nếu có lỗi
conn.rollback(savepoint1);
}