public void RunPgSqlTransaction(string myConnString)
{
PgSqlConnection pgConnection = new PgSqlConnection(myConnString);
pgConnection.Open();
PgSqlCommand pgCommand = new PgSqlCommand();
pgCommand.Connection = pgConnection;
PgSqlTransaction myTrans;
// Start a local transaction
myTrans = pgConnection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
pgCommand.Transaction = myTrans;
try
{
pgCommand.CommandText = "INSERT INTO Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')";
pgCommand.ExecuteNonQuery();
pgCommand.CommandText = "INSERT INTO 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();
}
}