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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    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 Expert 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
    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 confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    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 émérite
    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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    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 Expert 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
    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 émérite
    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
    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 Expert 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
    Par défaut
    @snipah : Ok, votre poste pretait a confusion

+ 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