4D v14.3Usar Transações |
||
|
4D v14.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. As transações aninhadas podem gerar disfunções nos bancos desenvolvidas com versões anteriores de 4D, por esta razão esta opção está desativada por padrão nos bancos convertidos (as transações ficam limitadas a um só nível). Se deseja aproveitar as transações em vários níveis em um banco convertido, deve ser indicado explicitamente selecionando a opção Permitir transações aninhadas na página “Aplicação/Compatibilidade” das Preferências da aplicação. Esta opção aparece apenas em bancos de dados convertidos. Por padrão, não está selecionada e é específica para cada banco. Não tem efeito nas transações realizadas no motor SQL de 4D. As transações SQL sempre são multinível. 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. |
PROPRIEDADES
Produto: 4D VER TAMBÉM
CANCEL TRANSACTION ARTICLE USAGE
Manual de linguagem 4D ( 4D v12.4) Inherited from : Usar Transações ( 4D v11 SQL Release 6) |