Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2008, 19h10   #1
Membre habitué
 
Inscription : mars 2002
Messages : 560
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 560
Points : 107
Points : 107
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 :
1
2
 
INSERT INTO MATABLE COMPTEUR SELECT ID FROM TABLE2
Est-ce faisable ?

Merci d'avance.
david71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 19h13   #2
Membre Expert
 
Homme
Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)
Inscription : mars 2003
Messages : 645
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 41
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)

Informations forums :
Inscription : mars 2003
Messages : 645
Points : 1 165
Points : 1 165
Il faut que tu crées un objet oracle que l'on appelle une séquence.
Ensuite tu fais:

Code :
1
2
3
4
5
INSERT INTO MATABLE 
VALUES
(id)
 SELECT ma_sequence.NEXTVAL
FROM TABLE2
phili_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 19h19   #3
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
http://oracle.developpez.com/faq/?pa...#autoincrement
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 09h46   #4
Membre habitué
 
Inscription : mars 2002
Messages : 560
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 560
Points : 107
Points : 107
Bonjour,

Merci pour ces infos mais j'ai une erreur avec le code suivant :
Code :
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.
david71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 10h18   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h25   #6
Membre habitué
 
Inscription : mars 2002
Messages : 560
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 560
Points : 107
Points : 107
Salut,

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

Code :
1
2
3
 
CREATE SEQUENCE maSequence1 START WITH 46 INCREMENT BY 1;
SELECT maSequence1.NEXTVAL FROM dual;
Puis l'INSERT.
david71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h26   #7
Membre habitué
 
Inscription : mars 2002
Messages : 560
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 560
Points : 107
Points : 107
Comment ensuite supprimer la séquence créée ?
david71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h31   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
drop sequence
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h47.


 
 
 
 
Partenaires

Hébergement Web