contrôle des transactions

Le contrôle des transactions assure l'intégrité de la base de données en garantissant que les lots d'opérations SQL s'exécutent complètement ou pas du tout. Les commandes de contrôle des transactions sont BEGIN, COMMIT et ROLLBACK.

Le mode de transaction Auto-commit est pris en charge. Dans ce mode, toutes les commandes SQL sont validées lorsque vous les exécutez. Si le système rencontre une commande SQL avant une commande BEGIN SQL, il exécute la commande SQL en mode transaction auto-commit. Si le système rencontre une commande SQL BEGIN, il exécute toutes les commandes SQL successives dans la transaction. Pour mettre fin à une transaction, vous devez émettre une commande SQL COMMIT ou ROLLBACK.

Certaines commandes SQL sont interdites dans le bloc de transaction BEGIN/COMMIT. Par exemple :
  • BEGIN
  • [CRÉER | SUPPRIMER] BASE DE DONNÉES
  • ALTER TABLE [ADD | DROP] COLONNE opérations
  • CONFIGURER L'AUTHENTIFICATION
  • [SET | DROP] CONNEXION
  • Table Groom
  • Générer des statistiques
  • DÉFINIR LA CLÉ HÔTE PAR DÉFAUT DU SYSTÈME
  • [CRÉER | MODIFIER|SUPPRIMER] KEYSTORE
  • [CRÉER | SUPPRIMER] CLÉ CRYPTO
  • SET CATALOGUE
  • SET SCHEMA dbname.schemaname, où dbname n'est pas la base de données actuelle
Ces commandes SQL sont également interdites dans le corps d'une procédure stockée de Netezza Performance Server. Si vous utilisez l'une de ces commandes dans un bloc de transaction ou une procédure stockée, le système affiche une erreur similaire au message suivant :
ERREUR : CREATE DATABASE : ne peut pas être appelé dans un bloc de transaction ou une procédure stockée
Note : Des sessions simultanées peuvent provoquer l'erreur suivanteCannot insert a duplicate key into unique index. Ce problème survient lorsque plusieurs sessions sont connectées à la même base de données et au même schéma et que, dans ces sessions, les utilisateurs démarrent un bloc de transactions et lancent une commande CREATE OBJECT object_name avec le même object_name. Toutes les commandes CREATE suivantes pour ce nom d'objet attendent que la première commande CREATE soit validée, puis les autres commandes CREATE de nom d'objet échouent en raison de l'erreur de clé dupliquée. Si la première commande CREATE OBJECT object_name est annulée, le système passe au bloc de session/transaction suivant qui a émis une commande CREATE pour ce nom d'objet, et toutes les autres commandes CREATE pour ce nom d'objet échouent en raison de l'erreur de duplication de clé. Pour les objets de type table, la syntaxe IF NOT EXISTS à l'intérieur du bloc de transaction n'empêche pas les commandes CREATE TABLE ultérieures pour nom_objet d'échouer avec l'erreur de clé dupliquée.