Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Savepoints ใน JDBC คืออะไร? อธิบาย


อินเทอร์เฟซ 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);
}