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 et script sql


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de daheda
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 81
    Par défaut Trigger et script sql
    Bonjour,
    je suis encore débutant dans le monde d'oracle. j'ai fait mon analyse avec Power AMC 12.5 et j'ai générer les base de données en scrpit que j'ai "uploadé" et ensuite exécuté.
    mais le problème c'est que je veux ajouter un trigger pour auto-incrémenter associant aux colonnes de clé primaire.
    mais oracle me sort l'erreur PLS 00049: Bad bin variable alors que j'ai vérifier les nom de colonnes et c'est exacte
    en voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TRIGGER TABLE1_T
       BEFORE INSERT
       ON TABLE1
       FOR EACH ROW
    BEGIN
       SELECT SEQ.NEXTVAL
         INTO :NEW.NUMERO
         FROM DUAL;
    END;
    Qu'est ce qui cloche? j'ai besoin d'aide Svp et merci d'avance

    cordialement,

  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,

    car NUMERO n'est pas un bon nom de colonne

    Si tu mets une colonne qui existe dans la table :NEW.COL1 ca devrait fonctionner

    Code sql : 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
     
     
    SQL> create table table1(a number , b varchar2(21));
     
    Table created.
     
    create sequence SEQ_table1 start with 1 increment by 1;
     
    Sequence created.
     
    SQL> CREATE OR REPLACE TRIGGER TABLE1_T
         BEFORE INSERT
           ON TABLE1
           FOR EACH ROW
        BEGIN
           SELECT SEQ_TABLE1.NEXTVAL
             INTO :NEW.A
             FROM DUAL;
      END;
      2    3    4    5    6    7    8    9   10  /
     
    Trigger created.

  3. #3
    Membre confirmé Avatar de daheda
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 81
    Par défaut
    bonojur,
    Merci Fatsora de ta réponse mais la colonne même qui se nome numero.
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create table "Fokontany"  (
       "Numero"      INTEGER                         not null,
       "codeBoriboritany"   INTEGER                         not null,
       "nomFokontany"       VARCHAR2(254),
       constraint PK_FOKONTANY primary key ("codeFokontany")
    );
    ce code a été crée par Power AMC
    et pour le trigger j'ai fait manuellement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE TRIGGER fkt_Trig
         BEFORE INSERT
           ON "Fokontany"
           FOR EACH ROW
        BEGIN
           SELECT SEQ_fkt.NEXTVAL
             INTO :NEW.Numero
             FROM DUAL;
      END;
    cordialement

  4. #4
    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 daheda Voir le message
    bonojur,
    Merci Fatsora de ta réponse mais la colonne même qui se nome numero.
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create table "Fokontany"  (
       "Numero"      INTEGER                         not null,
       "codeBoriboritany"   INTEGER                         not null,
       "nomFokontany"       VARCHAR2(254),
       constraint PK_FOKONTANY primary key ("codeFokontany")
    );
    ce code a été crée par Power AMC
    et pour le trigger j'ai fait manuellement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE TRIGGER fkt_Trig
         BEFORE INSERT
           ON "Fokontany"
           FOR EACH ROW
        BEGIN
           SELECT SEQ_fkt.NEXTVAL
             INTO :NEW.Numero
             FROM DUAL;
      END;
    cordialement
    Dans l'instruction de creation de la table "Fokontany"
    il manque "codeFokontany" ... je suppose que c'est NUMBER

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE "Fokontany"  (
       "Numero"      INTEGER                         NOT NULL,
       "codeFokontany" number ,
       "codeBoriboritany"   INTEGER                         NOT NULL,
       "nomFokontany"       VARCHAR2(254),
       constraint PK_FOKONTANY PRIMARY KEY ("codeFokontany")
    );

    Apres

    Comme tu as laissé les guillemets
    Oracle ne trouve pas Numero

    il faut mettre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      CREATE OR REPLACE TRIGGER fkt_Trig
            BEFORE INSERT
               ON "Fokontany"
               FOR EACH ROW
            BEGIN
               SELECT SEQ_fkt.NEXTVAL
                 INTO :NEW."Numero"
                 FROM DUAL;
         END;
     
    Trigger created.
     
    /

    Moralité enlève tous les guillements qui ont été genérés par POWER AMC

  5. #5
    Membre confirmé Avatar de daheda
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 81
    Par défaut
    Merci Fatsora ça marche!
    La morale est bien notée.
    cordialement

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

Discussions similaires

  1. trigger script sql
    Par mdh12 dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 29/11/2008, 00h20
  2. Réponses: 2
    Dernier message: 04/08/2008, 16h33
  3. pb script sql sur trigger (create or replace)
    Par sun19 dans le forum Développement
    Réponses: 3
    Dernier message: 29/11/2006, 13h02
  4. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 21h32
  5. Désactiver un trigger sous MS Sql Server
    Par WOLO Laurent dans le forum Développement
    Réponses: 6
    Dernier message: 03/07/2003, 12h51

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