IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Firebird Discussion :

Trigger "before insert"


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut Trigger "before insert"
    Bonjour,

    je souhaiterais s'avoir si il etait possible de stopper l'exécution d'un insert dans le trigger before insert. il y a un bien le fait de lever une exception mais dans ce cas toutes la transaction est rollback. N'existerait il pas un mot clef comme abort qui annulerait juste cet insert ?

    Merci d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    tu peux décrire précisemment ce que tu cherches à faire ?

  3. #3
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Citation Envoyé par le-roy_a Voir le message
    Bonjour,

    je souhaiterais s'avoir si il etait possible de stopper l'exécution d'un insert dans le trigger before insert. il y a un bien le fait de lever une exception mais dans ce cas toutes la transaction est rollback.
    Ce n'est pas vrai, il suffit d'intercepter l'exception en question et de choisir de ne pas la propager par exemple.


    Lorsqu'on fait un insert, si celui ci n'est pas réalisé, la moindre des choses c'est d'en informer le programme qui l'a demandé (d'où l'exception) après c'est au programme de choisir l'action qui en découle (par défaut donc en absence d'instruction) l'exception est remontée au plus haut niveau annulant le tout.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut
    en réalité j'utilise le programme fbexport (je n'ai donc pas la possibilité de récupérer les exceptions.) pour importer des données, donc ce programme est "bête et méchant" je n'ai pas du tous la main dessus or suivant les données j'aimerais que l'insert d'une des lignes ne se réalise pas, c'est pour cela que je pense que tester les données dans le before insert permeterait de stopper l'insert de cette ligne uniquement.

  5. #5
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Dans ce cas je n'utiliserai pas cette méthode.

    Soit vous faite une procédure avec en paramètre d'entrée les même colonnes que la table et dans votre procédure vous faites le test et insérez ou rejeter dans la table.

    Lors de l'import plutot que de faire des insert vous appelez la procédure.

    Soit vous créez une table temporaire "Elements_A_Supprimer" qui contient l'identifiant de votre premiere table.
    Dans votre trigger lorsque vous voulez rejeter l'insertion vous insérez dans la table "Elements_A_Supprimer" l'identifiant.
    En fin de traitement d'insertion il ne vous restera plus qu'a "delete" les éléments désigné pas la table "Elements_A_Supprimer"

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut
    effectivement votre méthode est plus complète, mais je n'ai absolument pas le choix il faut passer par fbexport donc si il n'est pas possible d'arreter un insert dans le trigger sans lever d'exception il faut que je me debrouille pour que c'est ligne ne soit pas présente dans le fichier mais je pense que cela n'est pas possible car lors de l'extraction je n'ai pas les éléments nécéssaire pour décider si les données doivent être présente ou pas

Discussions similaires

  1. Insertion quote et double quote
    Par Ebisu dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 08/10/2008, 17h41
  2. [ACCESS][JAVA][INSERT][QUOTE]Pb insertion quot
    Par 205 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 31/01/2008, 17h00
  3. [Trigger] -recursivité before|after insert
    Par jacquesh dans le forum Oracle
    Réponses: 3
    Dernier message: 24/11/2005, 15h10
  4. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo