PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

insert avec serial

Technique - général | insert avec serial

Par loacast le 23/04/2005 - 23:49

Bonjour,

Je souhaiterais insérés des lignes dans une table contenant un serial. De ce que j'ai compris, le serial fait l'auto'incrémentation. Ayant travaillé sous une base mysql ... j'écrivais la syntaxe suivante :

insert into ma_table values ('', 'libelle de mon choix')

la donnée entre côtes permettant la gestion automatique de l'auto incrémentation. Mais il semblerait que sous postgresql la syntaxe à adopter soit différente. Pourriez vous me la donner ?

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Syntaxe

Jean-Christophe Arnu/ = 28 Avril, 2005 - 10:14

Bonjour,

Pour insérer un sérial c'est tout simple (et conforme au standard SQL 99):

-- On suppose qu'on a une table de ce type
CREATE TABLE ma_table(id SERIAL not null PRIMARY KEY,champ_texte VARCHAR(12));

INSERT INTO ma_table(champ_texte) VALUES ('superbe');

SELECT * FROM ma_table;
id | champ_texte
------|------------
1 | superbe

(1 rows)



Jean-Christophe Arnu


insert avec serial

philippe_30/ = 19 Mai, 2005 - 10:37

Bonjour, je suis en train de migrer un bdd mysql sous postgres et je rencontre un probleme pour basculer un champ de type auto_incremental avec un pas de 4.
Postgres propose un champ type serial qui incrémente de un chaque nouvel enregistrement. Y a t il possibilité de forcer l'incrément avec une valeur de x ?
Merci de votre aide.
Philipppe


De façon générale, quand t

viadou_meleme/ = 19 Mai, 2005 - 11:51

De façon générale, quand tu as un serial associé à une colonne,
il suffit d'omettre la colonne dans la liste des colonnes au moment
de l'insert :

Exemple :
MA_TABLE avec C1 serial et C2 non serial alors l'ordre insert sera

Insert into MA_TABLE(C2) VALUES(valeur_C2)

A+


Sorry

viadou_meleme/ = 19 Mai, 2005 - 11:58

Encore moi :

J'avais mal compris ta question, il faut utiliser les séquences

CREATE SEQUENCE seq_MA_TABLE MINVALUE VAL_MINI_SEQ MAXVALUE VAL_MAXI_SEQ INCREMENT x;

Exemple :
CREATE SEQUENCE seq_MA_TABLE MINVALUE 0 MAXVALUE 10000 INCREMENT 4;

Et après tu fais :

Insert into MA_TABLE(C1, C2)
VALUES(nextval('seq_MA_TABLE'), valeur_C2);

A+


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.