Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 12/08/2005, 09h42   #1
Candidat au titre de Membre du Club
 
Inscription : août 2002
Messages : 204
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 204
Points : 13
Points : 13
Par défaut Numérotation automatique selon les utilisateurs

Bonjour tout le monde,

Je travaille avec la base de données PotsgreSQL. J'ai 2 utilisateurs qui accède en même temps à la même table pour introduire des données. Le code est programmé (en VB6) à être incrémenté automatiquement selon le nombre d'enregistrements dans la table. Mais, si les 2 utilisateurs travaillent en même temps, le même numéro sera attribué aux 2 enregistrements, ce qui est interdit! Donc, je fais appel à vous pour me conseiller à une méthode pour remédier à ce problème.

Merci d'avance
Safaritn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 10h15   #2
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
Utilise un champ de type SERIAL, qui est associé à une séquence, celui ci sera incrémenté par l'un ou par l'autre (et il n'y aura jamais 2 fois le même nombre) même dans des transaction.

KrysKool
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 11h24   #3
Candidat au titre de Membre du Club
 
Inscription : août 2002
Messages : 204
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 204
Points : 13
Points : 13
Merci pour votre réponse.

Est-ce qu'on peut créer une séquence sur une table déjà créée et contenant des données. Prière de me décrire comment.

Merci
Safaritn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 14h11   #4
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
J'ai une table (ma_table) qui possede une clef primaire de type INT4 (mon_id)

Code :
1
2
3
4
5
6
7
8
SELECT * FROM ma_table;
mon_id
--------
1
2
4
5
9
Pour gere les id avec une sequence, il faut recuperer la valeur maximum des id de ta table
Code :
1
2
SELECT max(mon_id) FROM ma_table;
9

Tu creer ta sequence
Code :
CREATE SEQUENCE ma_sequence;
et tu modifie la prochaine valeur a generer (9+1) donc 10
Code :
ALTER SEQUENCE ma_sequence RESTART WITH 10;
ensuite tu indiques que la valeur par defaut de mon_id est la sequence :
Code :
ALTER TABLE ma_table ALTER COLUMN mon_id SET DEFAULT NEXTVAL('ma_sequence');
voila
nota: par convention, la sequence devrait s'appeler ma_table_mon_id_seq
hpalpha 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 13h01.


 
 
 
 
Partenaires

Hébergement Web