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

 Oracle Discussion :

Trigger pour insérer une donnée


Sujet :

Oracle

  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 19
    Par défaut Trigger pour insérer une donnée
    Bonjour,
    J'ai un petit souci avec un trigger où j'ai deux conditions à tester et je ne suis pas vraiment fort pur l'écriture des triggers.
    Voilà l'énoncé : Soit la table ADHERENT(numAdherent,nom,CP,numCAdherent) présente dans la BD d'une bibliothèque. numCAdherent peut être NULL. Je dois écrire un trigger en insertion permettant de contrôler les contraintes suivantes :
    - le code postal dans lequel habite l'adhérent doit être 01,05 ou 70.
    - si numCAdherent est différent de NULL, le nom du conjoint de l'Adhérent doit être le même que celui de l'adhérent.

    Voici ce que j'ai fait mais je suis vite bloqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TRIGGER INSERERADHERENT
    BEFORE INSERT ON CLIENT
    FOR EACH ROW
    DECLARE
    nomConjoint VARCHAR;
    BEGIN
    SELECT CP INTO ADHERENT WHERE CP=01 OR CP=05 OR CP=70;
     
    IF(numAdherent IS NOT NULL) THEN
    nomConjoint:=nom;
     
    EXCEPTION
     
    END;
    Merci d'avance pour votre aide.
    Bonne soirée.

  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
    Un trigger est juste une fonction appelée lors de l'insertion de chaque ligne (si FOR EACH ROW est déclaré, et ça l'est dans 95% des cas)

    Pour savoir quelle donnée sont traitées, tu accèdes à la nouvelle valeur par :new.nom_colonne, et à l'ancienne valeur (celle qui était en base) par :old.nom_colonne.

    Le premier cas est simple, il suffit de tester :new.cp par un simple IF THEN RAISE

    Le second cas est plus compliqué vu que tu n'as pas le nom du conjoint dans la ligne insérée, et qu'il faut que tu ailles le rechercher dans la table que tu es en train de modifier. Chose impossible en select normal : ora-04091 Table mutante.
    http://sgbd.developpez.com/oracle/ora-04091/

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 19
    Par défaut
    Merci beaucoup, je vais regarder tout çà. Bonne soirée.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/06/2011, 15h31
  2. [MySQL] Problème pour insérer les données d'un fichier texte vers une table Mysql !
    Par BARRIAU76 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/01/2008, 23h24
  3. Requête SQL pour insérer une donnée BINAIRE ?
    Par Najdar dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/05/2006, 10h21
  4. Trigger pour faire une table "mirroir"
    Par lgomez dans le forum Oracle
    Réponses: 8
    Dernier message: 26/10/2005, 13h12
  5. Comment faire pour récup une donnée d'une liste déroulante
    Par magic8392 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/03/2005, 15h00

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