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 :

INSERT SELECT - Clé primaire automatique


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut INSERT SELECT - Clé primaire automatique
    Bonjour,

    Sous Oralce 10g, je souahaiterais remplir une table à partir d'une requête SELECT.

    Seul bémol j'ai une clé primaire dans ma table et je voudrais que le code SQL me génère automatiquement un compteur qui s'incrémente automatiquement de 1.

    Par exemple (remplacer COMPTEUR par ce qu'il faut) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO MATABLE COMPTEUR SELECT ID FROM TABLE2
    Est-ce faisable ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Il faut que tu crées un objet oracle que l'on appelle une séquence.
    Ensuite tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO MATABLE 
    VALUES
    (id)
     SELECT ma_sequence.nextval
    FROM TABLE2

  3. #3

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Bonjour,

    Merci pour ces infos mais j'ai une erreur avec le code suivant :
    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
     
    CREATE SEQUENCE maSequence
      START WITH 1
      MAXVALUE 999999999999999999999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      NOORDER;
     
    INSERT INTO AGREGATION_PNB (C_ID_AGREGATION, D_ANNEE, D_MOIS, N_MONTANT_MVT, N_MONTANT_PROV, N_MONTANT_CORTEX, N_MONTANT_EUROCLEAR, N_MONTANT_EMPRUNT,
    N_MONTANT_AJUSTEMENT,C_USER_CREATION, C_USER_MODIFICATION, D_DATE_CREATION, D_DATE_MODIFICATION, C_CLIENT, C_NUM_COMPTE)
     
    SELECT
    maSequence.NextVal, 
    ....
    J'ai une erreur du type : ORA-00911 invalid character.
    CREATE SEQUENCE MASEQUENCE FAILED.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    D'abord c'est un problème de syntaxe et tu devrais sans problème trouver l'erreur tout seul... mais si tu veux vraiment qu'on t'aide alors il faut copier TOUT le message sous SQL*Plus puisqu'il donne des informations essentielles pour trouver l'erreur en question

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Salut,

    Bon en fait ça marche comme cela mais il faut exécuter les commandes SQL séparément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE SEQUENCE maSequence1 START WITH 46 INCREMENT BY 1;
    select maSequence1.nextval from dual;
    Puis l'INSERT.

+ 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. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 13h58
  3. INSERT + SELECT TOP...argument incorrect
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 12/09/2005, 01h10
  4. [insert][select] Subqueries not allowed
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/09/2005, 11h56
  5. insert-select sur 2 base différente
    Par gskoala dans le forum Paradox
    Réponses: 2
    Dernier message: 16/11/2004, 15h11

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