#1 Wed 19 September 2012 12:20
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
[Postgres] Modifier la valeur actuele d'une sequance
Bonjour,
j'ai des tables dans Postgres dont les séquences associées au champs serial n'ont pas la bonne valeur.
Je souhaiterais donc modifier la valeur actuel de la séquence en fonction de la valeur max de mon champ.
J'ai tenté une requête du type :
ALTER SEQUENCE ma_sequence
RESTART WITH (select max(mon_id) from ma_table)
mais à priori le select n'est pas accepté dans cette requête.
Savez-vous s'il existe un moyen de faire cela avec une requête ?
Merci d'avance
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#2 Wed 19 September 2012 13:19
Re: [Postgres] Modifier la valeur actuele d'une sequance
Bonjour,
Une sous-requête ne semble pas possible dans cette instruction.
Par contre, en adaptant cet exemple : http://blog.endpoint.com/2010/07/postgr … ction.html
J'ai pu faire ceci :
Code:
CREATE FUNCTION exec(text) RETURNS text AS $$ BEGIN EXECUTE $1; RETURN $1; END $$ LANGUAGE plpgsql; SELECT exec('ALTER SEQUENCE test_seq_id_seq RESTART WITH '||(SELECT max(id)) FROM table2));
-> "ALTER SEQUENCE test_seq_id_seq RESTART WITH 158436"
Dernière modification par Mathieu BOSSAERT (Wed 19 September 2012 13:29)
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#3 Wed 19 September 2012 14:19
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: [Postgres] Modifier la valeur actuele d'une sequance
Je test ça
Merci pour l'info et bonne journée
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne