Há perigo de 2 users escreverem no mesmo registo numa BD em SQL Server Express?

jluisfer

Power Member
Vou nos próximos tempos desenvolver uma aplicação em VB6 com base de dados em SQL SERVER EXPRESS 2008 para gestão de stocks e movimento dos mesmos,e gostaria de saber se há o perigo de 2 users diferentes escreverem no mesmo registo da base de dados.Caso isso seja possível que código terei de colocar na ligação à BD para prevenir isso.Normalmente o código que uso é este:

tabela.addnew
....
definição dos campos a preencher
.....
tabela.update

E estou a usar o ADO 2.8 para ligação à BD
 
Usa transacções SQL... google it.

sugestão pessoal 1): Faz um esforço por deixar o VB6...
sugestão pessoal 2): Faz uso extensivo de Stored Procedures , funções e views e não faças spagheti code vb com insert,updates,deletes e queries no meio do codigo VB!!

/ing
 
Tenho aqui um exemplo de um projecto em c#...
//Actualizar stock
// conexão para obter a ultima transacção da outra loja
SqlConnection conn5 = connection_loja.LojaConnection();

//comando sql
SqlCommand cmd5 = new SqlCommand("SELECT Stock, ItemCode FROM Item WHERE ItemCode='" + codeItem + "'", conn5);

int result = (int)cmd5.ExecuteScalar();

if (result < intNumItem)
{
MessageBox.Show("O stock não suficiente" + result.ToString());
}
else
{
SqlTransaction transactionStock = null;
try
{
int actStock = result - intNumItem;
SqlCommand cmd6 = new SqlCommand("UPDATE Item SET stock='" + actStock + "' WHERE ItemCode='" + codeItem + "'", conn5);

transactionStock = conn5.BeginTransaction();
cmd6.Transaction = transactionStock;


cmd6.ExecuteNonQuery();

transactionStock.Commit();

}
catch
{
MessageBox.Show("Não foi possivel actulizar o stock");
transactionStock.Rollback();
throw;
}
connection_loja.closeConnection();

//Commit
SqlTransaction transactionItems = null;

try
{
// vamos obter a conexão para obter a ultima transaçao da outra loja
SqlConnection conn4 = connection_loja.LojaConnection();

//define o comando sql para selecionar os dados das tabela Vendas
SqlCommand cmd4 = new SqlCommand("INSERT INTO PurchaseItem(Store, Date, PurchaseID, ItemNumber, ItemCode, Time) VALUES('" + idstore + "','" + intData + "','" + ID_Purchase + "','" + intNumItem + "','" + codeItem + "','" + intHora + "')", conn4);

//Transation Commit
transactionItems = conn4.BeginTransaction();
cmd4.Transaction = transactionItems;
cmd4.ExecuteNonQuery();
transactionItems.Commit();
}
catch
{
MessageBox.Show("Erro ao inserir Itens no Purchase");
transactionItems.Rollback();
throw;
}
finally
{connection_loja.closeConnection();}
MessageBox.Show("Registado com sucesso");
}}}
 
Última edição:
Back
Topo