Ouvrir une transaction

Démarre une transaction; les modifications d'enregistrement qui suivent sont conservées dans la transaction jusqu'à ce qu'une action de script Valider la transaction ou Annuler la transaction soit exécutée.

Remarque  Les transactions sont gérées au sein de la fenêtre d'origine. Les actions exécutées dans différentes fenêtres à partir de la fenêtre de la transaction d'origine seront automatiquement validées en dehors des transactions existantes.

Options 

  • Ignorer les options de saisie automatique remplace toutes les options de rubrique définies pour la saisie automatique des données. Lorsque cette option est désélectionnée, les options de saisie automatique sont utilisées dans les rubriques pour tous les enregistrements nouveaux ou modifiés uniquement lorsque l'action de script Valider la transaction est atteinte. Consultez la section Définition de l'entrée automatique de données.

  • L'option Ignorer la validation lors de la saisie des données écrase les options de contrôle de saisie de données définies pour les rubriques et valide quand même l'enregistrement. Cette option ignore uniquement la validation des rubriques configurées sur l'option de validation Uniquement lors de la saisie des données dans la boîte de dialogue Options d'entrée pour ; les rubriques configurées sur Systématiquement continueront d'être validées, même si l'option Ignorer la validation lors de la saisie des données est sélectionnée. Consultez la section Définition de la validation des rubriques.

  • L'option Ignorer les conflits de verrouillage ESS permet aux clients des sources de données ODBC de forcer la validation des modifications lorsque le verrouillage optimiste empêche l'action de validation. Les sources de données ODBC sont également considérées comme des sources SQL externes (ESS).

Compatibilité 

Produit Prise en charge
FileMaker Pro Oui
FileMaker Go Oui
FileMaker WebDirect Oui
FileMaker Server Oui
FileMaker Cloud Oui
FileMaker Data API Oui
Publication Web personnalisée Oui

Provient de la version 

19.6.1

Description 

Une transaction se compose de modifications apportées à un ou plusieurs enregistrements dans la fenêtre active. Les modifications dans une transaction peuvent affecter plusieurs tables dans plusieurs fichiers de base de données. Toutes les modifications dans une transaction sont validées ou, si une erreur survient, annulées. Une transaction démarre avec une action de script Ouvrir une transaction. Après avoir démarré une transaction, les modifications d'enregistrement résultantes sont conservées dans la transaction jusqu'à qu'une action de script Valider la transaction ou Annuler la transaction soit exécutée. Les actions ci-dessous peuvent modifier les enregistrements stockés dans les bases de données et peuvent être utilisés comme actions de script transactionnelles.

Lorsque vous ajoutez une action de script Ouvrir une transaction à un script, l'action de script Valider la transaction y est automatiquement associée.

Les transactions :

  • commencent par quitter l'enregistrement actuellement actif, et d'y valider toute modification, avant de continuer. S'il n'est pas possible de quitter l'enregistrement actif, la fonction Ouvrir une transaction renvoie une erreur et les actions de script dans la transaction sont ignorées ;

  • combinent une ou plusieurs modifications de rubrique ou de table dans un seul ensemble de modifications ;

  • valident ou annulent un ensemble de modifications ;

  • regroupent les modifications de rubrique ou de table entre les actions de script Ouvrir une transaction et Valider la transaction ;

  • vous permettent de créer un ensemble de modifications plus fiable ;

  • peuvent être automatiquement annulées à l'aide de l'action de script Annuler la transaction ;

  • réussissent (validation) ou échouent (annulation) dans leur ensemble ;

  • réussissent lorsque les règles de schéma ont été respectées ;

  • sont automatiquement annulées lorsque les règles de schéma n'ont pas été respectées ;

  • peuvent éventuellement ignorer les paramètres de validation et les annulations automatiques lorsque les règles de schéma n'ont pas été respectées (ignorer les règles de schéma peut compromettre l'intégrité transactionnelle) ;

  • sont modifiées dans un fichier temporaire local avant que l'action de script Valider la transaction n'enregistre les modifications dans le fichier principal.

Les transactions sont automatiquement validées et terminées quand :

  • les boîtes de dialogue suivantes sont utilisées : Gérer la base de données, Gérer le conteneur ou Gérer la source de données ;

  • les actions ou actions de script suivantes sont effectuées : Enregistrer une copie ou Reconnexion ;

  • le fichier est fermé.

Par défaut, les transactions sont automatiquement annulées quand :

  • une erreur de schéma non résolue existe avant le démarrage d'une transaction. Les transactions sont automatiquement ignorées lorsque cela se produit ;

  • une modification apportée à une rubrique, définie pour être toujours validée, ne correspond pas aux options de validation de rubrique ;

  • l'action de script Annuler la transaction est utilisée ;

  • un script est annulé ;

  • l'action de script Interrompre script est utilisée dans une transaction ;

  • un script est annulé à l'aide de Script Debugger ;

  • il existe des erreurs de privilège, notamment aucun accès à la rubrique, aucun accès à l'enregistrement et aucun accès à la table.

Pour contrôler si les transactions s'annulent automatiquement lorsque certaines erreurs se produisent, utilisez l'action de script Définir Annuler la transaction sur erreur.

Remarques 

  • Les transactions imbriquées :

    • ne sont pas autorisées dans un même script (l'espace de travail de script empêche de placer une transaction à l'intérieur d'une autre) ;

    • peuvent être reproduites en ouvrant une transaction dans un script principal, puis en utilisant l'action de script Exécuter script pour appeler un sous-script. Tout ce qui se trouve dans le sous-script est exécuté dans le cadre de la transaction actuellement ouverte. Si le sous-script contient les actions Ouvrir une transaction et Valider la transaction, ces actions sont ignorées et renvoient l'erreur 3 (« Commande non disponible ») mais tout ce qui précède, entre et après ces actions du sous-script, est exécuté dans la transaction du script principal. Si le sous-script inclut une étape Annuler la transaction, il peut annuler la transaction du script principal et passer à l'action Valider la transaction correspondante. Consultez l'Exemple 4.

  • Lorsqu'elle est utilisée dans les transactions, l'action Supprimer l'enregistrement supprime un enregistrement à la fois.

  • L'action Tronquer la table ne peut pas être annulée.

  • Lorsqu'elle est utilisée dans les transactions, l'action Importer des enregistrements n'affiche pas de récapitulatif.

  • L'action de script Annuler la transaction n'annule pas la valeur d'incrément du numéro de série saisi automatiquement.

  • L'option Enregistrer autom. les modif. d'enreg. dans la boîte de dialogue Format de modèle est ignorée lors des transactions.

  • Les modifications apportées à l'action de script Exécuter FileMaker Data API ne sont pas incluses dans la transaction du script. Toute opération exécutée dans cette action de script, même incluse dans une transaction, est irréversible.

  • Pour déterminer si une transaction est actuellement ouverte, utilisez la fonction Obtenir ( EtatTransactionOuverte ).

Exemple 1 

Ouvre et valide une transaction.

Copier
Ouvrir une transaction []
    Ouvrir enreg./requête
    Définir rubrique [ Ressources::Description ; "texte descriptif" ]
Valider la transaction

Exemple 2 

Ouvre et valide une transaction sans validation de la saisie des données.

Copier
Ouvrir une transaction [ Ignorer la validation lors de la saisie des données ]
    Ouvrir enreg./requête
    Définir rubrique [ Ressources::Description ; "texte descriptif" ]
Valider la transaction

Exemple 3 

Ouvre et valide une transaction sans protection du verrouillage ESS.

Copier
Ouvrir une transaction [ Ignorer les conflits de verrouillage ESS ]
    Ouvrir enreg./requête
    Définir rubrique [ Ressources::Description ; "texte descriptif" ]
Valider la transaction

 

Exemple 4

Le script principal ouvre une transaction, définit la rubrique RubriqueTexte, puis appelle un sous-script. Étant donné que le sous-script est appelé alors qu'une transaction est déjà ouverte, son action Ouvrir une transaction est ignorée, RubriqueTexte est définie sur une valeur différente, et la condition de l'action Annuler la transaction est évaluée.

Si RubriqueNombre est définie sur 1, la transaction en cours (ouverte dans le script principal) est annulée. L'action Valider la transaction du sous-script est ignorée, puis le contrôle revient à l'action Valider la transaction du script principal, en sautant toutes les actions après Exécuter script. Lorsque le script principal est terminé, la valeur RubriqueTexte reste inchangée.

Si RubriqueNombre est définie sur 0, alors le sous-script ne rétablit pas la transaction, de sorte que le contrôle revient à l'action après Exécuter script, où RubriqueTexte est définie sur abc123 et la transaction est validée.

Script principal

Copier
Ouvrir une transaction [ ]
     Définir rubrique [ Table::RubriqueTexte ; "abc" ]
     Exécuter script [ Spécifié: Depuis liste ; "Sous-script" ; Paramètre: ]
     Définir rubrique [ Table::RubriqueTexte ; "abc123" ]
Valider la transaction

Sous-script

Copier
Ouvrir une transaction [ ]
    Définir rubrique [ Table::RubriqueTexte ; "xyz456" ]
    Annuler la transaction [ Condition: Table::RubriqueNombre = 1 ]
Valider la transaction