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

Sql Developer Oracle Discussion :

[trigger] Empêcher l'insertion de lettre


Sujet :

Sql Developer Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 63
    Points : 42
    Points
    42
    Par défaut [trigger] Empêcher l'insertion de lettre
    Bonjour à tous,

    J'ai créer une base de données sous oracle dans laquelle j'ai un table où sont stockées des données nécessitant d'être de type varchar mais ne devant accueillir que des chiffres (oui c'est con, mais j'en ai besoin pour mes cours o_O).

    Je dois donc créer un trigger empêchant toutes exécution d'insert sur cette table si les données ne correspond pas aux contraintes.

    Mon trigger ressemble à cela pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE TRIGGER TR_INSERT
    BEFORE INSERT ON LIEU
    BEGIN
      NULL;
    END;
    D'après mes recherches je vais devoir utiliser un RAISE pour arrêter l'exécution de la requête si besoin. Mais mis à part ça je n'ai pas trouvé comment faire.
    Auriez-vous des pistes ou des exemple/tuto pour que je puisse réussir à la compléter ?

    D'avance je vous remercie .

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

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Je pense qu'il existe des tutos pour les triggers, mais voici une explication générale
    Un trigger sur table peut être exécuté pour les opérations INSERT/DELETE/UPDATE
    Ensuite, il faut rajouter la clause FOR EACH ROW si tu veux qu'il s'exécute pour chaque ligne (sinon un 'insert select", le trigger ne s'exécutera qu'une seule fois). Les valeurs des colonnes sont accessible par :old.COLONNE et :new.COLONNE

    Dans ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER TR_INSERT
    BEFORE INSERT OR UPDATE OF COL1 ON LIEU
    FOR EACH ROW
    BEGIN
     IF LTRIM(:new.col1, '0123456789') IS NOT NULL -- contient autre chose que des chiffres
     THEN
      RAISE_APPLICATION_ERROR(-20001, 'La colonne COL1 '||:new.col1 ||' contient autre chose que des chiffres');
    END IF;
    END;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    MERCI !!
    Je connais le fonctionnement des trigger, c'est juste la vérification de la chaîne de caractère que je n'arrivais pas à trouver. Sais-tu si l'on peut faire cette vérification sur plusieurs colonne en même ,temps ou si je dois faire plusieurs if dans le même trigger ?

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    si vous concaténez plusieurs colonnes dans un même if, vous pourrez tester que plusieurs colonnes ne contiennent pas de valeurs autre que numérique.
    Pour les messages utiles, mettre un pouce vert fait plaisir à celui qui donne de son temps pour aider. (en tout cas, ça me fait plaisir)

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    ou un OR
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    Ok merci à vous deux de votre aide

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

Discussions similaires

  1. [11g] Empêcher un insert dans une table par un Trigger
    Par cmako dans le forum PL/SQL
    Réponses: 19
    Dernier message: 16/10/2013, 15h42
  2. Empêcher l'insertion des données avec un trigger
    Par hazmza dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 24/06/2010, 16h24
  3. Réponses: 2
    Dernier message: 01/03/2006, 15h16
  4. Réponses: 22
    Dernier message: 19/01/2006, 12h24
  5. trigger suite a insert
    Par DaxTaz dans le forum Développement
    Réponses: 4
    Dernier message: 07/07/2004, 11h27

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