Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 25-02-2010 14:36:40

bdf94  
Membre Power Geek
Date d'inscription: 04-10-2006
Messages: 180
Pépites: 2,231
Banque: 0

Trigger : gestion erreur

Bonjour,

J'ai un trigger sur l'insertion de ligne.
Je voudrais que si le trigger plante, la ligne soit quand même inséré.

Comment puis-je faire ?

Hors ligne

 

#2 25-02-2010 14:39:32

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: Trigger : gestion erreur

Bonjour, c'est un trigger after insert ?

PS :  ne pas oublier les précisions de rigueur


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 25-02-2010 15:09:49

bdf94  
Membre Power Geek
Date d'inscription: 04-10-2006
Messages: 180
Pépites: 2,231
Banque: 0

Re: Trigger : gestion erreur

le after n'existe pas en sybase.
c'est juste for insert

Hors ligne

 

#4 25-02-2010 16:11:51

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: Trigger : gestion erreur

d'où l'utilité de préciser la base
essaye d'intercepter l'erreur du trigger (clause CATCH, EXCEPTION ou autre)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 25-02-2010 16:12:40

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: Trigger : gestion erreur

salut
gere le code du trigger dans une procedure
et gere l'erreur dans cette procedure


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#6 25-02-2010 16:55:27

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Trigger : gestion erreur

Bonjour,

Je ne connais pas le contenu et la structure de ton trigger, mais tu peux éventuellement remplacer le rollback transaction en cas d'erreur dans le  trigger par un rollback trigger qui n'affectera que les modifications impliquées par le trigger :

Triggers and transactions

      When a trigger is defined, the action it specifies on the table to which it applies is always implicitly part of a transaction, along with the trigger itself. Triggers are often used to roll back an entire transaction if an error is detected, or they can be used roll back the effects of a specific data modification:
          o When the trigger contains the rollback transaction command, the rollback aborts the entire batch, and any subsequent statements in the batch are not executed.
          o When the trigger contains the rollback trigger, the rollback affects only the data modification that caused the trigger to fire. The rollback trigger command can include a raiserror statement. Subsequent statements in the batch are executed.

Hors ligne

 

#7 26-02-2010 11:16:58

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: Trigger : gestion erreur

buck a écrit:

Bonjour,

Je ne connais pas le contenu et la structure de ton trigger, mais tu peux éventuellement remplacer le rollback transaction en cas d'erreur dans le  trigger par un rollback trigger qui n'affectera que les modifications impliquées par le trigger :

Triggers and transactions

      When a trigger is defined, the action it specifies on the table to which it applies is always implicitly part of a transaction, along with the trigger itself. Triggers are often used to roll back an entire transaction if an error is detected, or they can be used roll back the effects of a specific data modification:
          o When the trigger contains the rollback transaction command, the rollback aborts the entire batch, and any subsequent statements in the batch are not executed.
          o When the trigger contains the rollback trigger, the rollback affects only the data modification that caused the trigger to fire. The rollback trigger command can include a raiserror statement. Subsequent statements in the batch are executed.

on fait cela comment ?
tu as un exemple ?
c'est pour quelle type de base de donnée ?


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#8 26-02-2010 17:52:33

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Trigger : gestion erreur

Bonjour,

Pour sauvegarder une ligne insérée dans une table malgré une erreur dans le trigger (ASE 12.5.1), on peut procéder de cette manière :

Code: sql

CREATE TRIGGER dbo.trg_demo ON dbo.enumeres
 For INSERT AS

      begin
        save transaction beforetrigger
        
            
        insert into pays values('FRA','France') 
        
        if (@@error != 0) 
        begin
          rollback transaction beforetrigger
        end

        commit transaction

      end


J'ai lu un peu vite en transversal le rollback trigger annule également l'insertion de la ligne ayant déclenché le trigger, mais pas l'ensemble des autres formulations SQL faisant partie de la même transaction contrairement au rollback transaction.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22