dotConnect for PostgreSQL Documentation
Devart.Data.PostgreSql Namespace / PgSqlTransaction Class / Rollback Method / Rollback() Method
Example

Rollback() Method
Rolls back a database transaction from a pending state.
Syntax
'Declaration
 
Public Overloads Overrides Sub Rollback() 
 
Remarks
The Rollback method is equivalent to the SQL ROLLBACK statement. The transaction can only be rolled back from a pending state (after PgSqlConnection.BeginTransaction has been called, but before Commit is called).
Example
The following example creates a PgSqlConnection and a PgSqlTransaction. It also demonstrates how to use the PgSqlConnection.BeginTransaction, Commit, and Rollback methods.
public void RunPgSqlTransaction(string myConnString)
{
  PgSqlConnection pgConnection = new PgSqlConnection(myConnString);
  pgConnection.Open();

  PgSqlCommand pgCommand = new PgSqlCommand();
  PgSqlTransaction myTrans;

  // Start a local transaction
  myTrans = pgConnection.BeginTransaction();
  // Assign transaction object for a pending local transaction
  pgCommand.Transaction = myTrans;

  try
  {
    pgCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')";
    pgCommand.ExecuteNonQuery();
    pgCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(60, 'PRODUCTION')";
    pgCommand.ExecuteNonQuery();
    myTrans.Commit();
    Console.WriteLine("Both records are written to database.");
  }
  catch(Exception e)
  {
    myTrans.Rollback();
    Console.WriteLine(e.ToString());
    Console.WriteLine("Neither record was written to database.");
  }
  finally
  {
    pgConnection.Close();
  }
}
Public Sub RunPgSqlTransaction(myConnString As String)
  Dim pgConnection As New PgSqlConnection(myConnString)
  pgConnection.Open()

  Dim pgCommand As New PgSqlCommand()
  Dim myTrans As PgSqlTransaction

  ' Start a local transaction
  myTrans = pgConnection.BeginTransaction()
  ' Assign transaction object for a pending local transaction
  pgCommand.Transaction = myTrans

  Try
    pgCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')"
    pgCommand.ExecuteNonQuery()
    pgCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(60, 'PRODUCTION')"
    pgCommand.ExecuteNonQuery()
    myTrans.Commit()
    Console.WriteLine("Both records are written to database.")
  Catch e As Exception
    myTrans.Rollback()
    Console.WriteLine(e.ToString())
    Console.WriteLine("Neither record was written to database.")
  Finally
    pgConnection.Close()
  End Try
End Sub
See Also