OVH Cloud OVH Cloud

[BRUIT] auto incrément hf/postgresql

4 réponses
Avatar
jacques trepp
bonjour à tous :)

je convertis une base hf en base C/S (mysql ou postgresql)
je veux récupérer les identifiants automatiques de la base HF.
en mysql, ça ne pose pas de problème, et une fois l'intégration
terminée, l'ID_Auto s'incrémente comme il faut à chaque nouvel INSERT.

je rencontre une difficulté avec postgresql :
l'intégration (une série de 'Insert into, etc..') se fait correctement,
mais la séquence n'est pas mise à jour, ce qui occasionne des doublons
à chaque nouvel INSERT.
Je peux, bien sur, balayer chaque table pour trouver le dernier ID, et
faire un :
SELECT setval('masequence_seq',dernier_id+1)
mais ça me parait bizarre.
y a-t-il un autre moyen ?

Merci

4 réponses

Avatar
Daniel
Bonjour,

regarde ce lien

http://dgriessinger.developpez.com/postgresql/sequences/

sous Postgresql l'autoincrement n'est pas géré comme avec Mysql.

jacques trepp writes:

bonjour à tous :)

je convertis une base hf en base C/S (mysql ou postgresql)
je veux récupérer les identifiants automatiques de la base HF.
en mysql, ça ne pose pas de problème, et une fois l'intégration
terminée, l'ID_Auto s'incrémente comme il faut à chaque nouvel INSE RT.

je rencontre une difficulté avec postgresql :
l'intégration (une série de 'Insert into, etc..') se fait correctemen t,
mais la séquence n'est pas mise à jour, ce qui occasionne des doublons
à chaque nouvel INSERT.
Je peux, bien sur, balayer chaque table pour trouver le dernier ID, et
faire un :
SELECT setval('masequence_seq',dernier_id+1)
mais ça me parait bizarre.
y a-t-il un autre moyen ?

Merci



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
jacques trepp
Daniel wrote:
Bonjour,

regarde ce lien

http://dgriessinger.developpez.com/postgresql/sequences/

sous Postgresql l'autoincrement n'est pas géré comme avec Mysql.



coincidence, j'ai trouvé ce lien ce matin, ce qui m'a appris que la
commande ALTER SEQUENCE ma_sequence RESTART WITH 123 n'était valable
qu'à partir de la 7.4 :(
d'où l'utilisation de
SELECT setval('ma_sequence',123);

ce qui me gène, c'est que la séquence n'est pas mise à jour lorsqu'on
indique l'identifiant au moment de l'import.
s'il n'y a pas d'autre solution, je ferai les mises à jour après les
intégrations.
merci :)
Avatar
Daniel
jacques trepp writes:

Daniel wrote:
> Bonjour,
> regarde ce lien
> http://dgriessinger.developpez.com/postgresql/sequences/
> sous Postgresql l'autoincrement n'est pas géré comme avec Mysql.
>
coincidence, j'ai trouvé ce lien ce matin, ce qui m'a appris que la
commande ALTER SEQUENCE ma_sequence RESTART WITH 123 n'était valable
qu'à partir de la 7.4 :(
d'où l'utilisation de
SELECT setval('ma_sequence',123);

ce qui me gène, c'est que la séquence n'est pas mise à jour lorsqu' on
indique l'identifiant au moment de l'import.
s'il n'y a pas d'autre solution, je ferai les mises à jour après les
intégrations.
merci :)



sinon autre solution les triggers, c'est cette méthode qui est utilisé
avec Interbase.

Sous Mysql V5 qui est en beta4, ils sont également implémentés.

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
jacques trepp
Daniel wrote:

jacques trepp writes:


Daniel wrote:

Bonjour,
regarde ce lien
http://dgriessinger.developpez.com/postgresql/sequences/
sous Postgresql l'autoincrement n'est pas géré comme avec Mysql.




coincidence, j'ai trouvé ce lien ce matin, ce qui m'a appris que la
commande ALTER SEQUENCE ma_sequence RESTART WITH 123 n'était valable
qu'à partir de la 7.4 :(
d'où l'utilisation de
SELECT setval('ma_sequence',123);

ce qui me gène, c'est que la séquence n'est pas mise à jour lorsqu'on
indique l'identifiant au moment de l'import.
s'il n'y a pas d'autre solution, je ferai les mises à jour après les
intégrations.
merci :)




sinon autre solution les triggers, c'est cette méthode qui est utilisé
avec Interbase.

Sous Mysql V5 qui est en beta4, ils sont également implémentés.



En effet.
je n'y suis pas habitué, mais je vais m'y mettre. Je débute en
postgresql. ça a l'air plus rigoureux que mysql, ce qui me plait bien,
mais mon appli doit tourner indifféremment avec postgres et mysql, donc
j'essaie de résoudre les problèmes au fur et à mesure qu'ils
apparaissent, la priorité étant de ne pas toucher au code windev, en
tous cas au minimum pour ne pas écrouler ce qui fonctionne très bien en
mysql.

merci, en tous cas.