Abrir transação

Inicia uma transação; alterações de registro posteriores são mantidas na transação até uma etapa de script Confirmar transação ou Reverter transação é executada.

Nota  As transações são tratadas dentro da janela de origem. As ações realizadas em janelas diferentes da janela da transação de origem serão confirmadas automaticamente fora das transações existentes.

Opções

  • Ignorar opções de entrada automática substitui quaisquer opções de campo definidas para entrada automática de dados. Quando esta opção está desmarcada, as opções de entrada automática são executadas nos campos para todos os registros novos ou modificados somente quando a etapa do script Confirmar transação é atingida. Consulte Definição da entrada de dados automática.

  • Ignorar validação de entrada de dados substitui qualquer conjunto de opções de validação de entrada de dados dos campos e confirma o registro mesmo assim. Esta opção ignora somente a validação para campos definidos com a opção de validação Somente durante a entrada de dados na caixa de diálogo Opções de campo; os campos definidos para Sempre validar ainda serão validados, mesmo se a opção Ignorar validação de entrada de dados for selecionada. Consulte Definição de validação do campo.

  • Ignorar conflitos de bloqueio ESSpermite que clientes de fontes de dados ODBC forcem a confirmação das alterações quando o bloqueio otimista impedir a ação de confirmação. As fontes de dados de ODBC são também conhecidas como fontes SQL externas (ESS).

Compatibilidade

Produto Compatível
FileMaker Pro Sim
FileMaker Go Sim
FileMaker WebDirect Sim
FileMaker Server Sim
FileMaker Cloud Sim
FileMaker Data API Sim
Publicação na Web personalizada Sim

Originada na versão

19.6.1

Descrição

Uma transação consiste em alterações em um ou mais registros na janela atual. As mudanças em uma transação podem afetar várias tabelas em vários arquivos de banco de dados. Todas as mudanças em uma transação são confirmadas juntas ou, se um erro ocorre, revertidas juntas. Uma transação começa com uma etapa de script Abrir transação. Depois de iniciar uma transação, as mudanças subsequentes no registro são mantidas na transação até que uma etapa de script Confirmar transação ou Reverter transação seja realizada. As etapas abaixo podem mudar registros armazenados no esquema do banco de dados e podem ser usadas como etapas de script de transação.

Quando você adiciona uma etapa de script Abrir transação a um script, a etapa de script Confirmar transação é automaticamente combinada com ela.

Transações:

  • Para começar, tente sair e confirme as alterações no registro atualmente ativo antes de prosseguir. Se não for possível sair do registro ativo, Abrir Transação retorna um erro e as etapas do script dentro da transação são ignoradas.

  • Combine uma ou mais modificações de campo ou tabela como um único conjunto de mudanças

  • Confirmar ou reverter um conjunto inteiro de mudanças

  • Agrupar modificações de campo ou tabela entre as etapas de script Abrir Transação e Confirmar transação

  • Permitir que você crie um conjunto mais confiável de mudanças

  • Pode ser revertido automaticamente com a etapa de script Reverter transação

  • Sucesso (confirmar) ou falha (reverter) como um grupo

  • Sucesso quando regras de esquema forem atendidas

  • Reverter automaticamente quando regras de esquema não forem atendidas

  • Como alternativa, você pode ignorar as configurações de validação e substituir reversões automáticas quando as regras do esquema não forem atendidas. Ignorar regras de esquema pode violar a integridade das transações.

  • São modificados em um arquivo temporário local antes que a etapa de script Confirmar transação salve as alterações no arquivo principal

As transações são automaticamente confirmadas e terminam quando:

  • As seguintes caixas de diálogo são usadas: Gerenciar banco de dados, Gerenciar contêiner ou Gerenciar fonte de dados

  • As seguintes ações ou etapas do script são executadas: Salvar uma cópia como ou Fazer login novamente.

  • O arquivo está fechado

Por padrão, as transações são revertidas automaticamente quando:

  • Existe um erro de esquema não resolvido antes do início de uma transação. As transações são ignoradas automaticamente quando isso ocorre.

  • Uma mudança em um campo, que está configurado para sempre validar, não corresponde às opções de validação do campo

  • A etapa de script Reverter transação é usada

  • Um script foi cancelado

  • A etapa de script Parar script é usada em uma transação

  • Um script é cancelado usando o Depurador de scripts

  • Há erros de privilégios, como: sem acesso a campo, sem acesso a registro e sem acesso a tabela

Para controlar se as transações são revertidas automaticamente quando certos erros ocorrem, use a Etapa de script Definir reverter transação ao encontrar erro.

Notas

  • Transações aninhadas:

    • Não são permitidas dentro do mesmo script (o Script Workspace impede que uma transação seja colocada dentro de outra)

    • Pode ser aproximado abrindo uma transação em um script principal e, em seguida, usando a Etapa de script Realizar script para chamar um subscript. Tudo no subscript é realizado dentro do escopo da transação atualmente aberta. Se o subscript contiver as etapas Abrir Transação e Confirmar Transação, essas etapas serão ignoradas e retornarão o erro 3 (“O comando não está disponível”), mas tudo antes, entre e depois dessas etapas no subscript é realizado dentro da transação do script principal. Se o subscript incluir uma etapa Reverter Transação, ele poderá reverter a transação do script principal e pular para a etapa Confirmação de Transação correspondente à transação. Consulte Exemplo 4.

  • A ação Excluir registro, quando usada dentro das transações, exclui um só registro por vez.

  • A ação Truncar tabela não pode ser revertida.

  • A ação Importar registros não mostra um resumo quando usado dentro das transações.

  • A etapa de script Reverter transação não reverte o valor Incremento de série de inserção automática.

  • A opção Salvar mudanças de registro automaticamente na Configuração de layout é ignorada durante as transações.

  • As alterações feitas pela etapa de script Executar API de dados do FileMaker não são incluídas na transação do script. Todas as operações realizadas nesta etapa de script, mesmo que incluídas em uma transação, não serão revertidas.

  • Para determinar se uma transação está aberta, use a função Função Get(TransactionOpenState).

Exemplo 1

Abre e confirma uma transação.

Copiar
Abrir transação [] 
    Abrir registro/solicitação 
    Definir campo [ Ativos::Descrição ; "texto descritivo" ] 
Confirmar transação

Exemplo 2

Abre e confirma uma transação sem uma validação de entrada de dados.

Copiar
Abrir transação [ Ignorar validação de entrada de dados ] 
    Abrir registro/solicitação 
    Definir campo [ Ativos::Descrição ; "texto descritivo" ] 
Confirmar transação

Exemplo 3

Abre e confirma uma transação sem proteção de bloqueio de ESS.

Copiar
Abrir transação [ Ignorar conflitos de bloqueio ESS ] 
    Abrir registro/solicitação 
    Definir campo [ Ativos::Descrição ; "texto descritivo" ] Confirmar transação

Exemplo 4

O script principal abre uma transação, define o TextField e chama um subscript. Como o subscript é chamado enquanto uma transação já está aberta, sua etapa Abrir transação é ignorada, o TextField é definido com um valor diferente e, em seguida, a condição na etapa Reverter Transação é avaliada.

Se o NumberField for 1, a transação atual (aberta no script principal) será revertida. A etapa Confirmar transação do subscript é ignorada e, em seguida, o controle retorna à etapa Confirmar transação do script principal, ignorando as etapas após Executar script. Quando o script principal é concluído, o valor do TextField permanece inalterado.

Se o NumberField for 0, o subscript não reverterá a transação, então o controle retorna à etapa após Executar script, onde o TextField está definido como abc123 e a transação é confirmada.

Script principal

Copiar
Abrir transação [ ]
    Definir campo [ Tabela::TextField ; "abc" ]
    Executar script [ Especificado: Da lista ; "Subscript" ; Parâmetro: ]
    Definir campo [ Tabela::TextField ; "abc123" ]
Confirmar transação

Subscript

Copiar
Abrir transação [ ]
    Definir campo [ Tabela::TextField ; "xyz456" ]
    Reverter transação [ Condição: Tabela::NumberField = 1 ]
Confirmar transação