Nesta aula você irá aprender a utilizar alguns comandos como begin, transaction, commit e rollback, em SQL Server, C# e Ruby.
O objetivo da aula de hoje é utilizar alguns comandos SQL como BEGIN TRANSACTION, COMMIT e ROOLBACK
Vamos mostrar exemplos na linguagem c# e Ruby.
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
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();
}
}
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
Nesta aula você irá aprender a utilizar alguns comandos como begin, transaction, commit e rollback, em SQL Server, C# e Ruby.
O objetivo da aula de hoje é utilizar alguns comandos SQL como BEGIN TRANSACTION, COMMIT e ROOLBACK
Vamos mostrar exemplos na linguagem c# e Ruby.
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
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();
}
}
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