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 :

trigger évènement système et création de séquence.


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut trigger évènement système et création de séquence.
    Est-il possible d'automatiser la création d'une séquence sur un CREATE TABLE.
    Je suis débutant sur PL SQL et je m'interesse aux triggers...
    Merci de vos réponses.

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Que veux tu faire exactement ?

    techniquement Oui , c'est possible de creer automatiquement une sequence

    Sinon ,un trigger ca doit etre quelque chose d'exceptionnel et non systematique ...

    c'est source d'erreur,de blocage, de bug

    moins on en crée , mieux la base se portera.

    On peut inserer dans une table avec sequence sans trigger ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    Ce que je veux faire c'est automatiser l'incrémentation de l'identifiant à la création d'une table. C'est vrai que je suis un peu flemmard... Non sans rire, je suis en formationj et j'ai fini le programme sur oracle alors je cherche par moi même. Je ne cherche pas des solutions toutes faites mais des pistes.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    Quand j'essaye jusqu'à maintenant de créer une séquence à partir d'un trigger basé sur un évènement système, j'obtiens une erreur à chaque fois, je cherche donc une piste pour contourner cette erreur.

  5. #5
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par yorgh1234 Voir le message
    Quand j'essaye jusqu'à maintenant de créer une séquence à partir d'un trigger basé sur un évènement système, j'obtiens une erreur à chaque fois, je cherche donc une piste pour contourner cette erreur.
    tu veux dire tu incrémentes ta sequence pas ... creer la sequence

    Je ne pense pas que tu veuilles creer a chaque fois ta sequence !

    sinon si tu postes ton code trigger et le desc de ta table,
    et surtout l'erreur

    on verra apres

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    VOICI LE TRIGGER QUE JE VOUDRAIS REALISER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE TRIGGER "TRIGGER1"
    AFTER CREATE ON USER1.SCHEMA
    DECLARE
      LOC VARCHAR2(200);
    BEGIN
     
      IF ORA_DICT_OBJ_TYPE = 'TABLE' THEN
          LOC := 'CREATE SEQUENCE "SEQUENCE_"'||ora_dict_obj_name||' INCREMENT BY 1 START WITH 1';
          EXECUTE IMMEDIATE LOC;
      END IF;
    END;
    CA COMPILE BIEN
    TRIGGER "TRIGGER1" Compiled.

    MAIS A L'UTILISATION :
    Error starting at line 1 in command:
    CREATE TABLE TOTOS (ID_TOTO NUMBER, AZER VARCHAR2(50), CONSTRAINT PK_TOTOS PRIMARY KEY (ID_TOTO))
    Error at Command Line:1 Column:0
    Error report:
    SQL Error: ORA-00604: une erreur s'est produite au niveau SQL récursif 1
    ORA-30511: opération DDL non valide pour les déclencheurs système

    COMMENT CONTOURNER LE PROBLEME, OU BIEN MON CODE COMPORTE-T-IL UNE ERREUR?

  7. #7
    Invité
    Invité(e)
    Par défaut
    tu peux creer un job dans ta procedure qui fera le boulot.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    MERCI POUR LE CONSEIL JE VAIS ESSAYER...
    MAIS UN PEU DE DOC SUR LES JOBS... SI POSSIBLE

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yorgh1234 Voir le message
    MERCI POUR LE CONSEIL JE VAIS ESSAYER...
    MAIS UN PEU DE DOC SUR LES JOBS... SI POSSIBLE
    google...
    ou
    http://oracle.developpez.com/guide/d...ages/dbms_job/

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    THANKS A LOT
    JE CHERCHE TOUT SEUL POUR LA SUITE
    SI J'AI DES SOUCIS AVEC LES JOB JE RE-POSTE UN MESSAGE.
    MERCI A TOUS LES DEUX POUR VOS REPONSES ET VOTRE DISPONIBILITE;

  11. #11
    Invité
    Invité(e)
    Par défaut
    tu sais que tu peux désactiver le verrouillage majuscule de ton clavier ?

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    Bonjour,

    En cherchant une solution à mon problème, je suis tombé sur ce fil de discussion et j'aurai une question :

    Je voulais savoir si un trigger dans le même style mais modifié comme suit pourrait être possible (celui-ci ne fonctionne pas, il est créé avec des erreurs de compilation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE TRIGGER "TRIGGER1"
    AFTER CREATE ON USER1.SCHEMA
    DECLARE
      LOC VARCHAR2(200);
    BEGIN
     
      IF ORA_DICT_OBJ_NAME = 'nom_table' THEN
          LOC := 'CREATE SEQUENCE "SEQUENCE_"'||ora_dict_obj_name||' INCREMENT BY 1 START WITH '||semect max(id) from ma_table;
          EXECUTE IMMEDIATE LOC;
      END IF;
    END;
    Pour que lorsque je créerai ma table nom_table, le trigger se déclence et crée une séquence pour cette nouvelle table avec une valeur de départ égale au plus grand id d'une autre table.

    Merci de me dire si une telle chose est possible ou non (je cherche de mon coté mais je ne trouve rien dans ce style, mais ça ne coute rien de demander ^^ )

    Merci d'avance

  13. #13
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    De mémoire, il n’est pas possible tel quel. Mais, il est possible de le créer via un job programme par le trigger.

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    Le problème c'est qu'en regardant un peu certains cours sur les jobs j'ai rien compris

    si ça peut aider (j'ai oublié le lien dans mon autre post) voici le fil de discussion que j'ai créé pour mon problème

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

Discussions similaires

  1. Trigger événements systèmes
    Par bsangoku dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 02/04/2011, 18h30
  2. Distinguer un événement système d'un événement utilisateur ?
    Par Filippo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/08/2008, 11h43
  3. [Système] PHP traducteur de séquences d'ADN
    Par maryach dans le forum Langage
    Réponses: 11
    Dernier message: 29/03/2007, 13h48
  4. Réponses: 10
    Dernier message: 29/01/2007, 17h01
  5. Création de séquence
    Par piotrek30 dans le forum Oracle
    Réponses: 9
    Dernier message: 09/06/2006, 12h00

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