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

Langage SQL Discussion :

recupere une clé qui est incremente automatique


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Points : 77
    Points
    77
    Par défaut recupere une clé qui est incremente automatique
    salut tout le monde
    voila mon problem :
    j'ai 2 tables :
    personne(id_personne,nom, prenom)
    adresse (id_personne,adresse,ville,code_postal)
    id_personne c une clé primaire qui est incrémente automatique dans la table personne et elle est un clé primaire que je dois l'inserer moi meme dans la table adresse
    je voudrai savoir comment faire pour récupérer la clé id_personne pour pouvroir l'ajouter dans la table adresse dans
    le problème c'est que je ne sais pas comment récupérer le dernier tuplet ajouter a la table personne si je pourrai le faire alors ...

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    En devoilant votre SGBD, vous aurez plus de chance que quelqu'un vous reponde

    exemple pour sybase c'est une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select @@Identity as Dernière_Valeur_AutoIncrémentée
    Oracle utilise des sequences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select masequence.currval from dual
    Pour MySQL c'est une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT_LAST_INSERT_ID()
    ....

    Bon courage

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    En devoilant votre SGBD, vous aurez plus de chance que quelqu'un vous reponde

    exemple pour sybase c'est une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select @@Identity as Dernière_Valeur_AutoIncrémentée
    Oracle utilise des sequences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select masequence.currval from dual
    Pour MySQL c'est une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT_LAST_INSERT_ID()
    ....

    Bon courage
    Merci Infiniment j'utilise Mysql

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Yanika_bzh comment tu fait pour utiliser l'incrémentation lors de la création d'une table.
    Pour oracle.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    Oracle utilise des sequences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select masequence.currval from dual
    Renseigne toi sur les séquences.
    L'identifiant de ta table sera de type NUMBER, tu définis une séquence, par exemple SequenceTable1, et à l'insertion tu utilises SequenceTable1.nextval pour renseigner ton identifiant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Merci de ta réponse, les séquences je vois maintenant à quoi cela sert, mais je ne voit pas comment faire la liaison de la séquence lors de la création de table.
    Quelle contrainte utiliser ?
    Un check ?

    Ou je le met juste en DEFAULT.

  7. #7
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par Snipah Voir le message
    Renseigne toi sur les séquences.
    L'identifiant de ta table sera de type NUMBER, tu définis une séquence, par exemple SequenceTable1, et à l'insertion tu utilises SequenceTable1.nextval pour renseigner ton identifiant.
    Je ne comprends pas votre intervention ...
    1) Je ne parle pas de typage
    2) Currval permet de recuperer la derniere valeur genérée par la sequence (ce qui est le cas pour ce post et non recuperer la prochaine valeur générée par la séquence).

    Je vous renvoie donc votre conseil et parcourir par exemple ce lien
    http://download.oracle.com/docs/cd/B....htm#sthref678

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Je répondais à xoum89 qui se questionnait sur l'auto increment des identifiants des tables sous Oracle.
    Je vous ai cité à cet effet, "Oracle utilise des sequences" contrairement à certains autres sgbd. Le message ne vous était donc pas directement adressé.

    Citation Envoyé par xoum89
    Merci de ta réponse, les séquences je vois maintenant à quoi cela sert, mais je ne voit pas comment faire la liaison de la séquence lors de la création de table.
    Quelle contrainte utiliser ?
    Un check ?

    Ou je le met juste en DEFAULT.
    En fait, tu crées une séquence pour chacune de tes tables ayant un champs ID.
    Ce champs sera de type NUMBER.
    Quand tu insères des données dans cette table, tu mets sequence.nextval pour le champs identifiant, il y mettra la prochaine valeur de ta sequence.
    Exemple :
    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
    CREATE TABLE test 
    (
     identifiant NUMBER,
     description VARCHAR2(50)
    );
     
    CREATE SEQUENCE sequencetest 
    INCREMENT BY 1 
    START WITH 1 
    MINVALUE 1;
     
    INSERT INTO test VALUES (sequencetest.nextval,'mon premier champs');
     
    INSERT INTO test VALUES (sequencetest.nextval,'mon second champs');
     
    INSERT INTO test
    SELECT sequencetest.nextval, description
    FROM
    (
     SELECT 'mon troisieme champs' as description from dual
     union all
     SELECT 'mon quatrieme champs' from dual
    );
    Ensuite, libre à toi de mettre les contraintes que tu veux sur ton identifiant.

  9. #9
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    @snipah : Ok, votre poste pretait a confusion

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Oui, je m'en suis aperçu en relisant

  11. #11
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 104
    Points : 28 400
    Points
    28 400
    Par défaut
    En SQL, on ne parle pas de champ et d'enregistrement, terminologie propre aux fichiers plats, mais de colonne et de ligne respectivement.
    Ton exemple prête à confusion :
    INSERT INTO test VALUES (sequencetest.NEXTVAL,'mon premier champs');
    Je suppose que tu voulais parler de ligne et nom de champ... (qui, au passage, ne prend pas de s au singulier)

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    En SQL, on ne parle pas de champ et d'enregistrement, terminologie propre aux fichiers plats, mais de colonne et de ligne respectivement.
    Ton exemple prête à confusion :
    Je suppose que tu voulais parler de ligne et nom de champ... (qui, au passage, ne prend pas de s au singulier)
    C'est juste, mea culpa.
    Un petit lien pour la route : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2
    Au passage, 'nom' prend un 'n' dans ta phrase. Ok je sors

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Oki merci bien pour ta réponse, cela est juste dommage que l'on peut pas en faire une contrainte lors de la création de la table.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/05/2008, 17h55
  2. appel d'une fonction qui est dans une autre page
    Par guppy33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/08/2006, 12h05
  3. Réponses: 2
    Dernier message: 19/09/2005, 17h20
  4. [VB6] recuperer une requete qui renvoie du xml
    Par voyageur dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/12/2004, 10h03
  5. voir comment est alimentée une vue qui est dans dba_objects
    Par meufeu dans le forum Administration
    Réponses: 15
    Dernier message: 06/10/2004, 17h27

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