Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 21/03/2007, 11h17   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 48
Points : 11
Points : 11
Par défaut Obtenir la valeur de l'id auto généré

Bonjour,

J'aimerais savoir s'il est possible d'obtenir la valeur générée lors d'un INSERT pour une colonne déclarée de cette manière :

ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 )
jdelges est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 12h22   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
C'est possible mais que dans un programme car la valeur d'une colonne IDENTITY ne peut être renvoyée que dans une variable comme le montre l'exemple ci-dessous extrait du Redbook IBM.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
/exec sql CREATE TABLE EMPLOYEE                 
+         (EMPNO INTEGER GENERATED ALWAYS AS IDENTITY 
+         (START WITH 1 INCREMENT BY 1),              
+         NAME CHAR(30),                              
+         SALARY DECIMAL(5,2),                        
+         DEPT SMALLINT)                              
/end-exec                                             
/exec sql INSERT INTO EMPLOYEE                        
+         (NAME, SALARY, DEPT)                        
+         VALUES('Rupert', 989.99, 50)                
/end-exec                                             
/exec sql VALUES IDENTITY_VAL_LOCAL() INTO :ivar 
/end-exec
La variable ivar est déclarée en numérique quelque part dans le programme.
L'instruction VALUES IDENTITY_VAL_LOCAL() INTO ... doit suivre immédiatement l'instruction INSERT INTO ...
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 13h39   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 48
Points : 11
Points : 11
Parfait! merci

Pour info voici le code java qui permet de récupérer l'id auto généré:

Code :
1
2
3
4
5
6
7
8
Statement stmt = conn.createStatement();
stmt.execute("INSERT INTO XX.YYY(COL1, COL2) VALUES (113, 'JFD')" );
 
ResultSet rs = stmt.executeQuery("SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1");
IF(rs.next())
{
	System.out.println(rs.getString(1)); // ID auto généré
}
jdelges 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 05h18.


 
 
 
 
Partenaires

Hébergement Web