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

PL/SQL Oracle Discussion :

Création de triggers


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Par défaut Création de triggers
    bonjour tout le monde,

    j'ai besoin de votre aide.
    j'ai 2 tables : TOURNNEE(IDTOURNEE, CODETOURNEE) et LOCAUX(IDLOCAL, ADRESSE)
    elles sont liées par une table de jointure CONTIENTTOURNEE(IDTOURNEE, IDLOCAL)
    Je voudrais créer des triggers qui permettront d'incrémenter automatiquement les ID des 2 tables et d'alimenter la table de jointure lorsqu'un nouvel enregistrement est inséré sur la table LOCAUX.

    Merci d'avance.

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu peux donner un exemple ?
    Car je ne vois pas comment c'est possible.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Par défaut
    Voici un exemple de code PLSql que j'ai testé (sachant que j'ai créé des séquences TOURNEE_SEQUENCE et LOCAUX_SEQUENCE). Le problème c'est que ça ne marche pas pour moi.

    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
    18
    19
    20
    21
    22
    23
    24
     
    CREATE TRIGGER TOURNEE_TRIGGER
    	BEFORE INSERT
    	ON TOURNEE
    	FOR EACH ROW
    	BEGIN
    	  SELECT TOURNEE_SEQUENCE.nextval INTO :NEW.IDTOURNEE FROM DUAL;
    	END;
     
    CREATE TRIGGER LOCAUX_TRIGGER
    	BEFORE INSERT
    	ON LOCAUX
    	FOR EACH ROW
    	BEGIN
    	  SELECT LOCAUX_SEQUENCE.nextval INTO :NEW.IDLOCAL FROM DUAL;
    	END;
     
    CREATE TRIGGER TRLOCAUX_TRIGGER
    	AFTER INSERT
    	ON LOCAUX
    	FOR EACH ROW
    	BEGIN
    	  INSERT INTO CONTIENTTOURNEE(IDTOURNEE, IDLOCAL) VALUES (TOURNEE_SEQUENCE.CURRVAL, New.IDLOCAL)
    	END;

    j'ai aussi essayé de faire de l'insert sur cette table de jointure au lieu d'utiliser les triggers avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO CONTIENTTOURNEE(IDTOURNEE, IDLOCAL) VALUES (TOURNEE_SEQUENCE.CURRVAL, LOCAUX_SEQUENCE.CURRVAL)
    ça ne marche pas non plus j'ai un message d'erreur
    Violation de contraintes d'intégrité FK_CONTIENTTOURNEE - clé parent introuvable

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ok, mais peux tu donner un exemple de données que tu veux (désolé, je me suis mal exprimé)
    Insertion Tournee : [ ] -> Créer...
    Insertion Locaux
    Insertion ContientTournee

    Pour info, le Currval n'est accessible dans la session qu'après un Nextval.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Par défaut
    j'espère que c'est bien ça ce que tu as demandé

    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
    18
     
    create table user.TOURNEE
    (
    IDTOURNEE NUMBER(6) NOT NULL
    CODETOURNEE CHAR(9 BYTES) NOT NULL
    )
     
    create table user.LOCAUX
    (
    IDLOCAL NUMBER(6) NOT NULL
    ADRESSE CHAR(9 BYTES) NOT NULL
    )
     
    create table user.CONTIENTTOURNEE
    (
    IDTOURNEE NUMBER(6) NOT NULL
    IDLOCAL NUMBER(6) NOT NULL
    )

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Non, mais c'est ma faute, je suis fatigué
    Quelle est la séquence de ce que tu veux insérer dans les tables et ce que tu veux qui soit inséré/mis à jour par trigger.
    un exemple
    J'insère 1, 'a' dans tournée
    J'insère ..
    Le trigger sur XXX m'insère ... dans YYY
    etc..

Discussions similaires

  1. Création de triggers sous PHPMyAdmin
    Par MakorDal dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/02/2007, 18h50
  2. [MySQL] Création de trigger depuis PHP
    Par Shiva dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2007, 13h16
  3. [Débutant] Création de trigger
    Par steph_batman dans le forum Développement
    Réponses: 4
    Dernier message: 06/12/2006, 16h44
  4. [PL/SQL] [9i] Pblm lors de la création de triggers
    Par ftrifiro dans le forum Oracle
    Réponses: 3
    Dernier message: 27/06/2006, 15h08
  5. [IB][IBQUERY][D7 pro] Création de Triggers à la volée.
    Par N1bus dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/10/2004, 14h23

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