Fórum Niveis Transacionais #53070
29/09/2005
0
Onde transacao é uma variavel do tipo TTransactionDesc e Trans_Conect é meu SqlConnection. O que acho que pode acontecer? Devo dar para cada transação um valor diferente, tipo: Cliente = 1, Estoque = 2, Fornec = 3 e etc...? O que quero dizer com isso? É o seguinte: Veja que meu TransactionID é igual a 1. Digamos que eu abrir essa transação para cadastrar cliente. Se por ventura eu abrir uma transação para Produtos, com o mesmo valor(TransactionID = 1) tambem, e se por ventura alguém terminar primeiro e der um Commit(transacao), a outra pessoa(usuário) não conseguirá gravar os seu dados, certo?(visto que o banco já ´commitou´ a transação. Eu penso que é assim. Se for assim, então terei que gerar um valor para cada transação, certo? Alguém sugere algo, que não precise dar valor a cada transação individualmente? Assim: Cliente = 1, Estoque = 2, Fornec = 3 etc..? Desde já agradeço a todos.
Paulo
Curtir tópico
+ 0Posts
30/09/2005
Vinicius2k
A ID esta restrita à instância da aplicação. Não se preocupe com o SGBD, pois este ID não lhe é enviado.
Observe:
http://forum.clubedelphi.net/viewtopic.php?t=49868
http://forum.clubedelphi.net/viewtopic.php?t=50909
http://forum.clubedelphi.net/viewtopic.php?t=53559
http://forum.clubedelphi.net/viewtopic.php?t=61246
T+
Gostei + 0
01/10/2005
Paulo
Gostei + 0
01/10/2005
Vinicius2k
Vc não conseguirá abrir a ID = 1 para cadastro de produtos pq ela está sendo utilizada para cadastro de cliente. Logo, o commit será para cliente.
O ´X´ da questão é: O ID de transação do dbExpress não faz nenhuma diferença para o SGBD. Não importa 100 usuários abrindo a ID = 1 porque a [b:7a9e55caed]ID é da aplicação[/b:7a9e55caed]. É apenas um identificador da transação que vc quer trabalhar no momento pq o TSQLConnection pode trabalhar com várias ao mesmo tempo. É um parametro local.
Eu diria que em 99¬ dos casos vc irá utilizar apenas a ID = 1, a não ser que sua aplicação permita, por exemplo, um cadastro dentro de outro. Exemplo: Vc abre a transação de ID = 1 para alterar um produto, mas dentro do cadastro de produtos vc pode cadastrar uma categoria, caso ela não exista, então, a transação para cadastro da categoria deve ser ID = 2 pq a ID = 1 ainda está aberta para a alteração do produto.
Na prática, este exemplo é muito raro, pq vc deve manter as transações curtas, então, não seria uma boa prática manter a transação ID = 1 aberta enquanto o usuário faz a digitação, a não ser em casos de travamento de registro para alteração, onde vc precisa manter a transação aberta para que o outro usuário não possa alterar o registro. Mas isto é travamento pessimista, uma questão para outro tópico. :)
Blz? Se não tiver entendido, é só postar novamente.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)