อินเทอร์เฟซ Savepoint ให้การควบคุม transaction เพิ่มเติม DBMS รุ่นใหม่รองรับ เช่น Oracle PL/SQL
เมื่อตั้ง save point จะกำหนดจุด rollback ตรรกะภายใน transaction หากเกิดข้อผิดพลาดหลัง save point สามารถ rollback ย้อนกลับได้ทั้งหมด หรือเฉพาะหลัง save point
Connection object มีเมธอดจัดการ save points:
setSavepoint(String savepointName): สร้าง save point ใหม่ คืน Savepoint object
releaseSavepoint(Savepoint savepointName): ลบ Savepoint ต้องส่ง Savepoint object ที่ได้จาก setSavepoint()
เมธอด rollback(String savepointName) ย้อนกลับไปที่ save point ที่ระบุ
ตัวอย่าง
try {
// สมมติมี connection object conn
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
// ตั้ง savepoint
Savepoint savepoint1 = conn.setSavepoint("Savepoint1");
String SQL = "INSERT INTO Employees VALUES (106, 20, 'Rita', 'Tez')";
stmt.executeUpdate(SQL);
// คำสั่งผิดพลาด
String SQL = "INSERTED IN Employees VALUES (107, 22, 'Sita', 'Tez')";
stmt.executeUpdate(SQL);
// ถ้าไม่มี error commit
conn.commit();
} catch(SQLException se){
// ถ้ามี error rollback ไปที่ savepoint1
conn.rollback(savepoint1);
}