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 dans une table à partir d'une autre


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 36
    Points : 23
    Points
    23
    Par défaut Trigger pour insérer dans une table à partir d'une autre
    Bonjour mes amis,

    Voila la structure de mes tables :
    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 table Abonnes  (
       idUser             INTEGER                         not null,
       idCat              INTEGER,
       nom                VARCHAR2(254),
       prenom             VARCHAR2(254),
       adresse            VARCHAR2(254),
       ville              VARCHAR2(254),
       tel                VARCHAR2(254),
       email              VARCHAR2(254),
       cin                VARCHAR2(254),
       codeSecret         VARCHAR2(254),
       dateAjout          DATE,
       codePostal         INTEGER,
       constraint PK_ABONNES primary key (idUser)
    );
     
    create table utilisateur  (
       idUser             INTEGER                         not null,
       login              VARCHAR2(254),
       password           VARCHAR2(254),
       activated          SMALLINT,
       type               VARCHAR2(254),
       constraint PK_UTILISATEUR primary key (idUser)
    );
    Je veux faire un trigger qui se déclenche une fois : j'ajoute dans la table(abonnes), l'id (abonne) soit enregistré dans la table (user) avec le même id, et login soit la concaténation du nom et prénom, type="abonne" et password="0123456".

    Merci d'avance !

  2. #2
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Bref, montrez nous ce que vous avez essayé de faire

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    Merci pour votre réponse j'ai réfléchi à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER tr1 on Abonnes
     FOR INSERT
    AS
        INSERT INTO Utilisateur(idUser, login,password,activated ,type)
       SELECT idUser,Concat(nom,prenom)
         FROM inserted
    Et pour le reste je n'arrive pas à savoir comment le faire.
    Excusez-moi je suis nulle en PL/SQL

  4. #4
    Invité
    Invité(e)
    Par défaut
    Chercher un peu et se documenter est rarement nuisible :
    http://sheikyerbouti.developpez.com/...?page=Chap6#L6

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    bonjour,

    j'ai changer l'idée de mon trigger pour que ça soit pour chaque ligne ajouter dans utilisateur avec le type="abonne" il m’insère dans abonnes avec utilisateur.idUser=Abonnes.iduser et utilisateur.login=abonnes.nom

    j'ai essayer d’exécuter celui la mais il me donne des erreurs:

    Error code 900, SQL state 42000: ORA-00900: instruction SQL non valide
    à la ligne end; if ,end if
    je ne sais pas vraiment d'ou vient l'erreur.

    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 or replace trigger t1 after insert on UTILISATEUR
    for each row
    declare
    loginName varchar(254);
    droit varchar(254);
    idAbn number(38);
     
    begin
    select IDUSER into idAbn from UTILISATEUR;
    select LOGIN  into loginName from UTILISATEUR;
    select TYPE into droit from UTILISATEUR;
    if droit=" abonne"
    then
    insert into ABONNES(IDUSER,NOM)values(dAbn,loginName);
    end if;
    commit;
    end;
    /
    merci d'avance d'avoir m'aider

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE TRIGGER t1 after INSERT ON UTILISATEUR
    FOR each row
    begin
     
    IF :NEW.TYPE='abonne'
    then
    INSERT INTO ABONNES(IDUSER,NOM)VALUES(:NEW.IDUSER ,:NEW.LOGIN );
    end IF;
    end;
    /
    Un minimum de recherche personnel ne serait pas un mal

    - Pas de "
    - 3 SELECT quand un seul suffirait, sachant qu'en plus ils ne sont pas nécessaires et provoqueront une erreur

    Bref... c'était n'importe quoi

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2012, 12h12
  2. Réponses: 3
    Dernier message: 29/10/2011, 14h24
  3. Réponses: 2
    Dernier message: 06/11/2009, 17h41
  4. [Tables] Update d'une table à partir d'une autre
    Par le_niak dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/01/2008, 09h01
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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