# Definir e desfazer até um ponto de salvamento

A API do JDBC 3.0 adiciona o método Connection.setSavepoint, que define um ponto de salvamento na transação corrente. O método Connection.rollback foi sobrecarregado para receber o argumento ponto de salvamento. Para obter mais informações deve ser consultado java.sql.Connection.

O código do exemplo abaixo insere uma linha na tabela, define o ponto de salvamento `svpt1`, e insere uma segunda linha. Quando mais tarde a transação é desfeita até `svpt1`, a segunda inserção é desfeita, mas a primeira inserção permanece intacta. Em outras palavras, quando a transação é efetivada somente a linha contendo '1' é adicionada à TABELA1.

    // A auto-efetivação deve estar desativada
    // para utilizar pontos de salvamento.
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    int rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES(1)");
    // definir o ponto de salvamento
    Savepoint svpt1 = conn.setSavepoint("S1");
    rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES (2)");
    ...
    conn.rollback(svpt1);
    ...
    conn.commit();

Tópico pai: java.sql.Savepoint
Conceitos relacionados
Liberação de ponto de salvamento
Regras para pontos de salvamento
Referências relacionadas
Restrições dos pontos de salvamento