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

Langage SQL Discussion :

Creation de trigger


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut Creation de trigger
    Bonjour à tous...
    Bonjour j'ai une base de donnée avec une table etudiant(numetu,nom, prenom, datenaiss, rue, cp, ville). J'aimerais creer un trigger qui me permettrais d'avoir un message d'erreur lors de la creation d'un etudiant ayant le meme numero d'étudiant qu'un existant.

    J'ai essayer avec la syntaxe suivante mais c'est un échec :

    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 TRIGGER memeid ON etudiant
    FOR EACH ROW 
     
    BEGIN 
    DECLARE addnumetu int;
    DECLARE addnbetu int;
     
    SELECT addnumetu=numetu FROM INSERTED;
    SELECT count(*) AS addnbetu from etudiant WHERE numetu=addnumetu;
     
    if (addnbetu > 0) then
    begin
            Raiserror('L’étudiant existe déjà.',0,1) ;
     
                Rollback work ;
            End ; 
    End IF ;
    END ;
    Auriez vous mieux à me proposer ???

    Cordialement,

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    D'après votre description numetu est la clef primaire de votre table.
    Dès lors, vous avez déjà un message d'erreur (violation de clef) si vous essayez d'ajouter un étudiant avec un numéro déjà existant.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour
    +1 pour waldar, il suffit de mettre numetu comme clé primaire de la table si ce n'est déjà fait, et il n'y a pas besoin de trigger.

    A+
    Soazig

  4. #4
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    comme ils ont dit; puisque tu as une cle primaire, c'est à Oracle de gérer le cas
    mais je pense que tu veut s'exercer sur le déclencheur!!!!

    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 OR REPLACE TRIGGER memeid AFTER INSERT ON etudiant
    FOR EACH ROW 
     
    BEGIN 
    DECLARE addnumetu int;
    DECLARE addnbetu int;
     
     
    addnumetu:= :new.numetu;
    SELECT count(*) 
    INTO addnbetu 
    FROM etudiant 
    WHERE numetu=addnumetu;
     
    --tu peux faire 
    --SELECT count(*) INTO addnbetu FROM etudiant WHERE numetu=:new.numetu;
    IF (addnbetu > 0) then
    begin
            dbms_output.put_line('L’étudiant existe déjà.') ;
     
                Rollback ;
            End ; 
    End IF ;
    END ;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    Exactement en fait je réalise une PTI pour mon oral de BTS et il demande d'insérer un Trigger à tout prit ds mon projet !

    Je ne sais pas si vous avez une idée !

Discussions similaires

  1. Probleme de creation de trigger
    Par Cartman.inc dans le forum PL/SQL
    Réponses: 1
    Dernier message: 20/06/2007, 11h11
  2. creation de trigger
    Par freestyler dans le forum Administration
    Réponses: 40
    Dernier message: 12/12/2006, 09h57
  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