FirebirdSQL logo

Transactions

Les procédures et fonctions stockées, y compris celles contenues dans les packages, sont exécutées dans le contexte de la transaction dans laquelle elles ont été lancées. Les déclencheurs sont exécutés dans le contexte de la transaction dans laquelle l’instruction DML déclenchant le déclencheur a été exécutée. Une transaction distincte est lancée pour les déclencheurs sur un événement de base de données.

PSQL ne permet pas les instructions de début et de fin de transaction, mais il est possible d’exécuter une instruction ou un bloc d’instructions dans une transaction autonome.

Structure du module

La syntaxe des modules PSQL se distingue par un en-tête et un corps. Les instructions DDL pour leur déclaration sont des instructions complexes, c’est-à-dire qu’elles consistent en une seule instruction qui comprend des blocs de plusieurs instructions. Ces instructions commencent par un verbe (CREATE, ALTER, DROP, RECREATE, CREATE OR ALTER) et se terminent par la dernière instruction END du corps du module.

En-tête du module

L’en-tête contient le nom du module et la description des variables locales. Pour les procédures stockées et les blocs PSQL, l’en-tête peut contenir la description des paramètres d’entrée et de sortie. L’en-tête du déclencheur ne peut pas contenir de paramètres d’entrée et de sortie.

L’en-tête du déclencheur doit contenir un événement (ou une combinaison d’événements), auquel le déclencheur sera appelé automatiquement.

Privilèges d’exécution de code PSQL

Le code PSQL peut être exécuté dans l’un des modes suivants :

  • Avec des privilèges d’utilisateur appelant (privilèges CURRENT_USER) ;

  • En définissant les privilèges de l’utilisateur (propriétaire de l’objet de métadonnées).

Les privilèges d’exécution du module PSQL sont spécifiés dans son en-tête dans la clause optionnelle SQL SECURITY.Si l’option INVOKER est sélectionnée, le module PSQL est exécuté avec les privilèges de l’utilisateur appelant.Si l’option DEFINER est sélectionnée, le module PSQL est exécuté avec les privilèges de l’utilisateur définissant (propriétaire). Ces privilèges seront complétés par des privilèges accordés au module PSQL lui-même à l’aide de l’Instruction GRANT.Par défaut, les procédures, les fonctions sont exécutées avec les privilèges de l’utilisateur appelant, et les déclencheurs héritent des privilèges de sécurité spécifiés pour la table.

Les blocs PSQL anonymes (EXECUTE BLOCK) sont toujours exécutés avec les privilèges de l’appelant.