|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 183 ![]() |
Bonjour,
Je voudrais savoir comment dire qu'une donnée de type serial est en auto increment. Par la même, je souhaiterais aussi savoir comment gérer cela dans une requête sql. Etant habitué des bases de données mysql je mettais juste double côtes pour signifier cela mais peut être qu'avec postgreSQL est-ce différent ? Enfin je vous remercie de bien vouloir m'aider. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 131 ![]() |
Une donnée de type serial est un raccourci pour définir un int4 avec une incrémentation automatique (à l'aide d'une séquence).
Bref, à partir du moment où tu dis qu'un champ est serial, il est forcément auto-incrémenté. |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 183 ![]() |
Merci beaucoup pour ta réponse qui me ravit au plus haut point. Néanmoins comment faire la requête sql insert en sachant que l'on a un serial (qui comme tu l'as si bien dis s'auto gère) ?
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 183 ![]() |
J'ai pas dans l'habitude d'insister sur une question mais celle-ci est vitale à l'avancer de mon activité et si je ne sais pas insérer des données avec un serial je ne peux continuer. En sachant que j'ai fini le côté client, ça serait bête de bloquer sur l'enregistrement ...
J'ai finalement trouvé ... et je me demande vraiment comment j'ai fait pour ne pas trouver avant Bon pour les curieux : insert into ma_table (libelle) values ('mon libelle') sachant que ma table contient un id de type serial et un libelle de type varchar |
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() Inscription : mai 2002 Messages : 131 ![]() |
Bah, j'avais fini ma journée, je suis parti du boulot... et je rentre à peine chez moi, là
En fait, ton type serial, tu n'es pas obligé de le gérer dans les INSERT. Pour prendre un exemple simple : une table avec un champ serial et un champ texte Code :
Code :
INSERT INTO matable (libelle) VALUES ('le libellé') Code :
INSERT INTO matable (id, libelle) VALUES (NEXTVAL(matable_id_seq), 'le libellé') |
||
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 183 ![]() |
Merci bien pour la fonction ... Mais sinon, pour récupérer l'id sans devoir faire une requête qui cherche cet id, comment fait on sachant que je suis dans un contexte php ?
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 131 ![]() |
Sans requête SQL, c'est impossible. Mais avec une simple SELECT, pour connaître la valeur courante de ta séquence, il faut appeler la méthode currval() :
Par contre, il faut savoir que cette fonction ne fonctionnera pas s'il n'y a eu aucun nextval dans la session de la base de données. Une dernière chose : je viens de m'apercevoir que j'ai fait une erreur dans mon post précédent. Le nom de la séquence, quand on appelle nextval() doit être mis entre quotes simples. |
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Inscription : mai 2005 Messages : 160 ![]() |
Ce n'est pas mieux de faire cela ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com