Transações em comandos SQL

Nesta aula você irá aprender a utilizar alguns comandos como begin, transaction, commit e rollback, em SQL Server, C# e Ruby.

assinaturaAssine nossa Comunidade

Aplicação Web C# - Transações em comandos SQL

O objetivo da aula de hoje é utilizar alguns comandos SQL como BEGIN TRANSACTION, COMMIT e ROOLBACK

Vamos mostrar exemplos na linguagem c# e Ruby.

Exemplo no SQL SERVER - BEGIN/TRANSACTION/COMMIT/ROOLBACK

O Begin Transaction é utilizando quando, por exemplo, precisamos enviar os dados do cartão de crédito do cliente na compra de um produto, para o Gateway de pagamento. Teremos que fazer uma ação se o cartão foi aceito ou outra ação, caso der erro de cartão não aceito ou problemas na conexão. Essas ações podem ser de Commit ou Roolback, respectivamente.

Vamos fazer um exemplo incluindo um cliente no banco de dados.

Vamos escrever BEGIN TRANSACTION antes do comando INSERT, para efetivar a inclusão com o comando COMMIT. Dessa forma o cliente será gravado no banco de dados.

      
        BEGIN TRANSACTION 
          INSERT INTO Cliente(nome, telefone, email) values('Danilo, '123456', 'danilo.aparecido.santos@gmail.com')
        COMMIT
       
    

Vamos escrever BEGIN TRANSACTION antes do comando INSERT, para desfazer a inclusão com o comando ROOLBACK. Dessa forma o cliente não será gravado no banco de dados

      
        BEGIN TRANSACTION 
          INSERT INTO Cliente(nome, telefone, email) values('Danilo, '123456', 'danilo.aparecido.santos@gmail.com')
        ROLLBACK
       
    

Exemplo no C# - BEGIN TRANSACTION/COMMIT/ROOLBACK

Vamos mostrar um exemplo de BEGIN TRANSACTION no C#

    
      public void SalvarPedido(Pedido pedido)
      {
        SqlConnection con = new SqlConnection(@"Integrated Security=SSPI;
                                              Persist Security Info=False;
                                              Initial Catalog=VendasWeb;
                                              Data Source=DIDOX-WINDOWS\SQLEXPRESS;")
        con.Open();
        SqlTransaction transaction = con.BeginTransaction();
        var sql = "INSERT INTO Cliente (nome,telefone,email) 
        values ('" + this.Nome + "','" + this.Telefone + "','" + this.Email + "')");

        SqlCommand cmd1 = new SqlCommand(sql, con, transaction);

        try 
        {
          pedido.ClienteID = Convert.ToInt32(cmd1.ExecuteScalar());
          pedido.Salvar(transaction);
          transaction.commit();
        }
        catch(Exception err)
        {
          transaction.Roolback();
        }
      }
      
     
  

Exemplo no Ruby - BEGIN TRANSACTION/COMMIT/ROOLBACK

Para utilizar begin transaction no Ruby on Rails, precisamos declarar o bloco ActiveRecord::Base.transaction

    
      ActiveRecord::Base.tansaction do 
        grupo_corrida_pagamento.grupo_corrida.desafios.each do |desafio|
          desafios_fazer = DesafiosFazer.new 
          desafios_fazer.desafio = desafio
          desafios_fazer.usuario = grupo_corrida_pagamento.usuario 
          desafios_fazer.save!
        end 
        grupo_corrida_pagamento.status = GrupoCorridaPagamento::PAGO 
        grupo_corrida_pagamento.save 
        grupo_corrida_pagamento.usuario.envia_boleto_gerado 
      end
    
  

Transações em comandos SQL

Nesta aula você irá aprender a utilizar alguns comandos como begin, transaction, commit e rollback, em SQL Server, C# e Ruby.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Aplicação Web C# - Transações em comandos SQL

O objetivo da aula de hoje é utilizar alguns comandos SQL como BEGIN TRANSACTION, COMMIT e ROOLBACK

Vamos mostrar exemplos na linguagem c# e Ruby.

Exemplo no SQL SERVER - BEGIN/TRANSACTION/COMMIT/ROOLBACK

O Begin Transaction é utilizando quando, por exemplo, precisamos enviar os dados do cartão de crédito do cliente na compra de um produto, para o Gateway de pagamento. Teremos que fazer uma ação se o cartão foi aceito ou outra ação, caso der erro de cartão não aceito ou problemas na conexão. Essas ações podem ser de Commit ou Roolback, respectivamente.

Vamos fazer um exemplo incluindo um cliente no banco de dados.

Vamos escrever BEGIN TRANSACTION antes do comando INSERT, para efetivar a inclusão com o comando COMMIT. Dessa forma o cliente será gravado no banco de dados.

      
        BEGIN TRANSACTION 
          INSERT INTO Cliente(nome, telefone, email) values('Danilo, '123456', 'danilo.aparecido.santos@gmail.com')
        COMMIT
       
    

Vamos escrever BEGIN TRANSACTION antes do comando INSERT, para desfazer a inclusão com o comando ROOLBACK. Dessa forma o cliente não será gravado no banco de dados

      
        BEGIN TRANSACTION 
          INSERT INTO Cliente(nome, telefone, email) values('Danilo, '123456', 'danilo.aparecido.santos@gmail.com')
        ROLLBACK
       
    

Exemplo no C# - BEGIN TRANSACTION/COMMIT/ROOLBACK

Vamos mostrar um exemplo de BEGIN TRANSACTION no C#

    
      public void SalvarPedido(Pedido pedido)
      {
        SqlConnection con = new SqlConnection(@"Integrated Security=SSPI;
                                              Persist Security Info=False;
                                              Initial Catalog=VendasWeb;
                                              Data Source=DIDOX-WINDOWS\SQLEXPRESS;")
        con.Open();
        SqlTransaction transaction = con.BeginTransaction();
        var sql = "INSERT INTO Cliente (nome,telefone,email) 
        values ('" + this.Nome + "','" + this.Telefone + "','" + this.Email + "')");

        SqlCommand cmd1 = new SqlCommand(sql, con, transaction);

        try 
        {
          pedido.ClienteID = Convert.ToInt32(cmd1.ExecuteScalar());
          pedido.Salvar(transaction);
          transaction.commit();
        }
        catch(Exception err)
        {
          transaction.Roolback();
        }
      }
      
     
  

Exemplo no Ruby - BEGIN TRANSACTION/COMMIT/ROOLBACK

Para utilizar begin transaction no Ruby on Rails, precisamos declarar o bloco ActiveRecord::Base.transaction

    
      ActiveRecord::Base.tansaction do 
        grupo_corrida_pagamento.grupo_corrida.desafios.each do |desafio|
          desafios_fazer = DesafiosFazer.new 
          desafios_fazer.desafio = desafio
          desafios_fazer.usuario = grupo_corrida_pagamento.usuario 
          desafios_fazer.save!
        end 
        grupo_corrida_pagamento.status = GrupoCorridaPagamento::PAGO 
        grupo_corrida_pagamento.save 
        grupo_corrida_pagamento.usuario.envia_boleto_gerado 
      end