Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1340 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [db2] équivalent des séquences d'Oracle ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[db2] équivalent des séquences d'Oracle ?

n°498603
Nestor
Posté le 26-08-2003 à 15:33:38  profilanswer
 

Salut,  
 
à priori, il n'existe pas d'équivalent pour DB2 des séquences d'Oracle ou Postgresql.  
Me-trompe-je ?
 
Dans ce cas, comment faites-vous pour gérer une incrémentation automatique sur une clef par exemple ?
 
Merci de votre aide.
Nestor.

mood
Publicité
Posté le 26-08-2003 à 15:33:38  profilanswer
 

n°498635
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-08-2003 à 15:56:02  profilanswer
 

Quel version de db2?
Si ta version est inférieur à la 7.2 c'est à la main et c'est vraiment la merdasse :). Bon tu peux toujours faire des trucs comme ça:

Code :
  1. insert into tatable select coalesce(max(id)+1,0), ... tes autres champs from tatable)


cela marche bien a condition que id soit ta primary key ou qu'il y ait un index unique dessus.

n°498638
Nestor
Posté le 26-08-2003 à 15:58:31  profilanswer
 

Et si c'est une version supérieure à la 7.2, il y a une solution plus propre ?

n°498642
Nestor
Posté le 26-08-2003 à 16:00:47  profilanswer
 

Parce que sinon j'ai trouvé çà

Code :
  1. CREATE TABLE Table_1(
  2. "CompteurAuto"   INTEGER                   PRIMARY KEY         GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1, NO CACHE),


 
mais je ne sais pas comment l'utiliser : faut-il faire un select compteurAuto avant l'insertion ou on fait une insertion directement (mais dans ce cas, avec quelle valeur ?) ?
 

n°498660
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-08-2003 à 16:09:05  profilanswer
 

non tu précises pas ta colonne lors de l'insertion un peu comme sous mysql. Mais utilises plutot By default que always.
 
Attention fait des tests parce que si tu fais des insertions à la main en précisant ton id, l'autoincrementeur(si ça existe comme mot) n'en tient pas compte...
Exemple:

Code :
  1. Une table T1 : I INT GENERATED By DEFAULT AS IDENTITY, J INT
  2. INSERT INTO T1(j) VALUES(5)
  3. INSERT INTO T1(J) VALUES(10)
  4. SELECT * FROM T1
  5. I J
  6. -------
  7. 1 5
  8. 2 10
  9. INSERT INTO T1 values(3,15)
  10. SELECT * FROM T1
  11. I J
  12. -------
  13. 1 5
  14. 2 10
  15. 3 15
  16. INSERT INTO T1(J) VALUES(20)
  17. SELECT * FROM T1
  18. I J
  19. -------
  20. 1 5
  21. 2 10
  22. 3 15
  23. 3 20


(exemple tiré de dbforums j'ai la flemme cet aprem ;) )

n°499226
Nestor
Posté le 27-08-2003 à 08:09:15  profilanswer
 

ok ça marche sur ma version Db2.
Mais je m'interroge : comment je fais pour récupérer la valeur du numéro que je viens de générer ? (dans le cas où il y a des insertions quasi simultanées)


Message édité par Nestor le 27-08-2003 à 09:16:49

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [db2] équivalent des séquences d'Oracle ?

 

Sujets relatifs
DB2 : équivalent au rowcount d'Oracle ou Limit de MySQL ?php et date Oracle[résolu]
[File_exists] equivalent de cette fonction appliquable en rézo ?performance sous DB2
[oracle] mise à jour de structure de base[PHP] Support (présent ou futur) de DB2
[oracle]exploser des champs hétérogène[ORACLE] : comment exploiter les fichiers ".ARC" ???
Plus de sujets relatifs à : [db2] équivalent des séquences d'Oracle ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR