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

Administration Oracle Discussion :

creation de trigger


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut creation de trigger
    bonjour,
    je souhaite écrire un trigger dans une table, dont la clé est (LOGIN, CODE) , concernant un champ donné (FLAG)
    FLAG = 0 ou 1

    si on met à FLAG à 1, tous les autres enregistrements vont avoir FLAG = 0..
    comment je peux écrire ça..??

    j'ai fait ceci mais ça me génère une erreur comme quoi il est déjà en train de bidouiller dans la table..(MyTable en mutation.. le déclencheur ne peut la voir..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    CREATE OR REPLACE TRIGGER TRIG_MyTable
    BEFORE INSERT OR UPDATE
    ON MyTable
    FOR EACH ROW
     
    BEGIN
    	 IF UPDATING THEN
    	    IF :New.FLAG = 1 THEN
    		UPDATE MyTable
    		SET FLAG= 0
    		WHERE Login = :NEW.Login
    		AND Code <> :NEW.Code; 
                     END IF;
    	 END IF;
    END;
    /

  2. #2
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Tu ne pourras pas faire de trigger car ta table est en cours de modification (Table Mutating ...).
    Pourquoi ne pas le faire en 2 passes?
    1ere requete qui met a jour le falg pour (LOGIN, CODE)
    2 ieme requete qui met le flag à 0 pour tous les autres couple différent de (LOGIN, CODE)

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Merci d'utiliser la fonction rechercher vous trouverez toutes les informations nécessaires pour résoudre ce problème, cette question étant maintes fois posée.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    c'est vrai..
    à chaque fois, on me renvoie sur un autre lien, et chacun propose une méthode..

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Eh bien toutes les solutions pour éviter l'erreur ORA-04091 sont là :
    http://sgbd.developpez.com/oracle/ora-04091/

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    j'ai déjà vu ce lien..

    d'abord, je cherche à mettre à jour toute ma table excepté l'enregistrement qui a changé..

    ensuite, comme je suis loin d'etre expert en bases de données, j'ignore quelles conséquences a le fait d'ajouter des tables temporaires, ou l'ajout d'un 2ème ou 3ème trigger..(problème de performance)

    par ailleurs, le coup des exceptions n'est pas du tout intéressant pour ce cas là car oracle intercepte des ecceptions qui n'ont pas lieu d'être..

    voila..
    Ce n'est pas faute de pas avoir cherché, et excuser mon manque de compétences dans ce domaine..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [oracle][php]creation de trigger
    Par guittonews dans le forum PL/SQL
    Réponses: 6
    Dernier message: 06/12/2007, 11h10
  2. Probleme de creation de trigger
    Par Cartman.inc dans le forum PL/SQL
    Réponses: 1
    Dernier message: 20/06/2007, 11h11
  3. [PHP5.2][MySQL5.0.27] Creation de triggers depuis PHP
    Par frochard dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 05/12/2006, 10h16
  4. [PL/SQL] Creation de triggers dans transaction
    Par globeriding dans le forum Oracle
    Réponses: 15
    Dernier message: 07/02/2006, 11h33
  5. creation de trigger
    Par mitsubi dans le forum SQL
    Réponses: 3
    Dernier message: 12/09/2003, 15h13

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