4D v16.3Usar Transações |
||
|
4D v16.3
Usar Transações
Usar Transações
As transações são uma serie de modificações realizadas no interior de um processo sobre dados relacionados. Uma transação não é guardada permanentemente no banco até que a transação seja validada. Se não for completada uma transação, seja porque for cancelada ou por um evento externo, as modificações não são guardadas. Durante uma transação, todas as mudanças realizados aos dados do banco dentro do processo são armazenados localmente em um buffer temporário. Se a transação for aceita com VALIDATE TRANSACTION, as mudanças são guardadas de maneira permanente. Se a transação for cancelada com CANCEL TRANSACTION, as mudanças não são guardadas. Em todos os casos, nem a seleção atual nem o registro atual são modificados pelos comandos de gestão de transações. Nota: por razões de compatibilidade, as transações aninhadas estão desativadas por padrão nos bancos de dados convertidos de versões anteriores a v11 (ver Página Compatibilidade). 4D inclui uma funcionalidade que lhe permite suspender e reativar as transações dentro de seu código 4D. Quando se suspende uma transação, pode executar operações de forma independente da transação mesma e depois reativar a transação para validá-la ou cancelá-la como de costume. Quando se suspende a transação, pode em particular:
Para obter mais informação sobre este ponto, consulte Suspender as transações. Neste exemplo, o banco é um sistema de faturação simple. As linhas das faturas são armazenadas em uma tabela chamada [Linha_Fatura], a qual está relacionada com a tabela [Faturas] por uma relação entre os campos [Faturas]NumeroFaturas e [Linha_Fatura]NumeroFaturas. Quando se adiciona uma fatura, um número único é calculado utilizando o comando Sequence number. A relação entre [Faturas] e [Linha_Fatura] é uma relação automática Muitos a um. A caixa de seleção Autoatribuir valor no subformulário está selecionada. Quando um usuário introduz uma fatura, são executadas as seguintes ações:
Este exemplo é uma situação típica na qual necessita utilizar uma transação. Necessita ter certeza de que vai poder salvar todos estes registros durante a operação ou de que poder cancelar a transação se um registro não puder ser adicionado ou atualizado. Em outras palavras, deve guardar os dados relacionados. Há várias maneiras de introduzir dados utilizando transações: READ WRITE([Linha_Fatura]) 2. Para reduzir os bloqueios de registros durante a entrada de dados, pode também selecionar administrar transações a partir do método de formulário e acessar as tabelas em READ WRITE apenas quando seja necessário. READ WRITE([Linha_Fatura]) Note que a tabela [Partes] está em modo de acesso "apenas leitura" durante a entrada de dados. O acesso leitura/escrita estará disponível apenas se os dados forem confirmados. Case of Se clicar no botão bCancel, a entrada e a transação devem ser canceladas. Case of
Case of Neste código, chamamos ao comando CANCEL sem importar em qual botão o usuário clique. O novo registro não está validado por uma chamada a ACCEPT, mas pelo comando SAVE RECORD. Além disso, note que SAVE RECORD é chamado imediatamente antes que o comando VALIDATE TRANSACTION. Portanto, guardar o registro [Faturas] é na verdade parte da transação. Chamar o comando ACCEPT também confirmaria o registro, mas neste caso a transação será validada antes de que o registro [Faturas] seja guardado. Em outras palavras, o registro seria guardado fora da transação.
Ver também
CANCEL TRANSACTION
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
Modificado: 4D v15 R4 ARTICLE USAGE
Manual de linguagem 4D ( 4D v16) |