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

Forms Oracle Discussion :

Insert avec séquence


Sujet :

Forms Oracle

Vue hybride

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

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Par défaut Insert avec séquence
    Bonjour à tous !
    Voilà mon souci :

    J'ai une table "Individu" avec les colonnes IND_ID (number), IND_NOM (varchar2).
    J'ai une table Vehicule avec les colonnes VEH_ID (number), VEH_NOM (varchar2), VEH_IND_ID (number).
    VEH_IND_ID est clé etrangère sur la colonne IND_ID de la table Individu.
    Vous aurez tous compris que je gère ainsi les vehicules avec le nom de leur propriétaire.
    Mes colonnes IND_ID, VEH_ID sont alimentés par une séquence.
    Maintenant, dans un de mes programmes, je veux insérer un individu puis son vehicule.
    Je fais donc cela pour Individu
    INSERT into Individu values (maSequence.nextVal, "Toto");
    Mais pour vehicule, je souhaiterais faire qque chose comme cela :
    INSERT into vehicule (VEH_IND_ID, VEH_ID, VEH_NOM) values (maSequence.currval, maSequence.nextval, "Ferrari")
    Seulement maSequence.currval, DANS CE CONTEXTE, equivaut à maSequence.nextval car je suppose que maSequence.nextval est executé avant maSequence.currval. Du coup, ma clé étrangère n'est plus bonne.
    Auriez-vous une idée afin que je puisse gérer ce problème ?
    D'avance merci

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

    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
    Billets dans le blog
    4
    Par défaut
    1 seule sequence pour gérer 2 id différents...

    Soit tu crées 2 séquences (seq_ind et seq_veh) Soit tu mémorise dans une variable la valeur sequence.currval

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Eh bien tu peux faire quelque chose comme ceci :
    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
    SQL> insert into t1(n) values (s1.nextval) return n into :v_n;
    1 row created.
     
    SQL> insert into t2(a,b) values (:v_n, s1.nextval);
    1 row created.
     
    SQL> select n from t1;
            N
    ---------
            2
     
    SQL> select a, b from t2;
            A         B
    --------- ---------
            2         3

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

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Par défaut
    Genial ! Merci beaucoup PlaineR ! Ca marche par_fai_te_ment
    Bonne continuation !

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

    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
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par plaineR
    Eh bien tu peux faire quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> insert into t1(n) values (s1.nextval) return n into :v_n;
    1 row created.
     
    SQL> insert into t2(a,b) values (:v_n, s1.nextval);
    1 row created.
    C'est marrant je m'étais toujours demandé à quoi servait le return into géré par forms sans chercher à savoir.
    Du coup avec en plus un exemple simple ..... merci

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par McM
    C'est marrant je m'étais toujours demandé à quoi servait le return into géré par forms sans chercher à savoir.
    Du coup avec en plus un exemple simple ..... merci
    Dans forms, c'est super intéressant quand tu as des triggers dans ta base qui modifient certaines colonnes. Tu te retrouves avec le message "Record has been updated by another user". Si tu utilises cette propriété, tu n'as plus le message. Cela évite les execute_query.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par McM
    C'est marrant je m'étais toujours demandé à quoi servait le return into géré par forms sans chercher à savoir.
    Pour des explications plus détaillées sur l'utilité de cette propriété et combien elle peut être indispensable, Cf. ce post que j'ai ouvert et que plaineR a résolu : http://www.developpez.net/forums/sho...d.php?t=292222

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

Discussions similaires

  1. [INSERT][SELECT] insert avec un select imbriqué
    Par narmataru dans le forum SQL
    Réponses: 11
    Dernier message: 06/03/2013, 03h04
  2. Insertion avec contrôle d'un champ séquence
    Par hammag dans le forum SQL
    Réponses: 2
    Dernier message: 20/02/2012, 18h44
  3. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  4. INSERT avec procédure stockée / Clef de type AutoInc
    Par bgdelphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/10/2003, 18h30
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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