On Fri, 21 May 2004 18:39:30 +0200 (Yvon Thoraval) wrote:
Banoît Barbier wrote:
> SELECT max(lang_id) t_language_lang; > --Va renvoyer une valeur n > > DROP SEQUENCE t_language_lang_seq; > CREATE SEQUENCE t-language_seq START n+1;
oui, c'est bien sur PostgreSQL...
il ne veut pas droper l'ancienne séquence, pourtant c'est bien la nouvelle qui est prise en compte car, le n , je l'ai arrondi à la centaine supérieure, histoire de vérifier, par l'id qu'elle était bien prise en compte.
si j'essaie de retrouver, par pg_class qu'elle la séquence attribuée à cette colonne, je retoruve l'ancienne...
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
d nom_de_la_table
?
d TABLE describe table (or view, index, sequence)
Que donne cette commande?
ou d sans argument pour connaître toutes les tables(séquences comprises) de la BD.
Benoît
On Fri, 21 May 2004 18:39:30 +0200
yvon.thoravalNO-SPAM@free.fr (Yvon Thoraval) wrote:
Banoît Barbier <benoit.br@skynet.be> wrote:
> SELECT max(lang_id) t_language_lang;
> --Va renvoyer une valeur n
>
> DROP SEQUENCE t_language_lang_seq;
> CREATE SEQUENCE t-language_seq START n+1;
oui, c'est bien sur PostgreSQL...
il ne veut pas droper l'ancienne séquence, pourtant c'est bien la
nouvelle qui est prise en compte car, le n , je l'ai arrondi à la
centaine supérieure, histoire de vérifier, par l'id qu'elle était
bien prise en compte.
si j'essaie de retrouver, par pg_class qu'elle la séquence attribuée
à cette colonne, je retoruve l'ancienne...
Pour retrouver le nom d'une séquence utilisée par une table il y a
plus facile:
d nom_de_la_table
?
d TABLE describe table (or view, index, sequence)
Que donne cette commande?
ou d sans argument pour connaître toutes les tables(séquences
comprises) de la BD.
On Fri, 21 May 2004 18:39:30 +0200 (Yvon Thoraval) wrote:
Banoît Barbier wrote:
> SELECT max(lang_id) t_language_lang; > --Va renvoyer une valeur n > > DROP SEQUENCE t_language_lang_seq; > CREATE SEQUENCE t-language_seq START n+1;
oui, c'est bien sur PostgreSQL...
il ne veut pas droper l'ancienne séquence, pourtant c'est bien la nouvelle qui est prise en compte car, le n , je l'ai arrondi à la centaine supérieure, histoire de vérifier, par l'id qu'elle était bien prise en compte.
si j'essaie de retrouver, par pg_class qu'elle la séquence attribuée à cette colonne, je retoruve l'ancienne...
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
d nom_de_la_table
?
d TABLE describe table (or view, index, sequence)
Que donne cette commande?
ou d sans argument pour connaître toutes les tables(séquences comprises) de la BD.
Benoît
yvon.thoravalNO-SPAM
Banoît Barbier wrote:
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
d nom_de_la_table
Oui, merci beaucoup pour ta pertinente remarque comme je suis la tête dans le guidon java j'oublie qu'en cli, tout est si simple :)))
donc le résultat :
macave=# d t_appellations_alt Table "public.t_appellations_alt" Column | Type | Modifiers -----------+-----------------------+------------------------------------ ----------------------------- alt_id | integer | not null default nextval('t_appellations_alt_alt_id_seq'::text) reg_id | integer | wcol_id | integer | alt_desc | character varying(64) | not null default ''::character varying alt_notes | text | Indexes: "t_appelations_alt_pkey" primary key, btree (alt_id) "t_appelations_alt_alt_desc_key" unique, btree (alt_desc)
donc la nouvelle séquence avec la bonne orthographe a bien été prise en compte...
il n'y a que les _pkeys qui sont mal orthographiées
en fait je voudrais retourner la valeur du dernier "alt_id" (par exemple) après une insertion, depuis java, j'ai essayé le "select MAX(mon_id) from table machin" ça marche tant que non paramétré, si je fais :
avec exactement le même "mon_id", ça ne me retourne rien, pas même une erreur...
alors comme déjà ce n'est pas très élégant de faire ça je voudrais faire :
select currval('t_appellations_alt_alt_id_seq') ;
mais, comme je ne sais pas retrouver (par java, pas en cli où c'est facile) 't_appellations_alt_alt_id_seq' à partir de 'alt_id' (mais ça doit-être possible...) il faut absolument que mes noms de cols et tables soient corrects de telle manière que je puisse créer la string : 't_appellations_alt_alt_id_seq' à partir de :
't_appellations_alt' et de : 'alt_id' car je ne veux pas avoir de hash table qui me donne la séquence en fonction de l'id (maintenance oblige)
l'idéal, pour moi, étant de retrouver le nom de la colonne séquence à partir du nom de la colonne id et de "pg_attrdef", "pg_attribute" et de "pg_class" (ou autres) ce qui rendrait mon appli indépendante du choix des noms et donc accessoirement de mes fotes d'aurtograffes...
-- yt
Banoît Barbier <benoit.br@skynet.be> wrote:
Pour retrouver le nom d'une séquence utilisée par une table il y a
plus facile:
d nom_de_la_table
Oui, merci beaucoup pour ta pertinente remarque comme je suis la tête
dans le guidon java j'oublie qu'en cli, tout est si simple :)))
donc le résultat :
macave=# d t_appellations_alt
Table "public.t_appellations_alt"
Column | Type |
Modifiers
-----------+-----------------------+------------------------------------
-----------------------------
alt_id | integer | not null default
nextval('t_appellations_alt_alt_id_seq'::text)
reg_id | integer |
wcol_id | integer |
alt_desc | character varying(64) | not null default ''::character
varying
alt_notes | text |
Indexes:
"t_appelations_alt_pkey" primary key, btree (alt_id)
"t_appelations_alt_alt_desc_key" unique, btree (alt_desc)
donc la nouvelle séquence avec la bonne orthographe a bien été prise en
compte...
il n'y a que les _pkeys qui sont mal orthographiées
en fait je voudrais retourner la valeur du dernier "alt_id" (par
exemple) après une insertion, depuis java, j'ai essayé le "select
MAX(mon_id) from table machin" ça marche tant que non paramétré, si je
fais :
avec exactement le même "mon_id", ça ne me retourne rien, pas même une
erreur...
alors comme déjà ce n'est pas très élégant de faire ça je voudrais faire
:
select currval('t_appellations_alt_alt_id_seq') ;
mais, comme je ne sais pas retrouver (par java, pas en cli où c'est
facile) 't_appellations_alt_alt_id_seq' à partir de 'alt_id' (mais ça
doit-être possible...) il faut absolument que mes noms de cols et tables
soient corrects de telle manière que je puisse créer la string :
't_appellations_alt_alt_id_seq' à partir de :
't_appellations_alt' et de :
'alt_id' car je ne veux pas avoir de hash table qui me donne la séquence
en fonction de l'id (maintenance oblige)
l'idéal, pour moi, étant de retrouver le nom de la colonne séquence à
partir du nom de la colonne id et de "pg_attrdef", "pg_attribute" et de
"pg_class" (ou autres) ce qui rendrait mon appli indépendante du choix
des noms et donc accessoirement de mes fotes d'aurtograffes...
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
d nom_de_la_table
Oui, merci beaucoup pour ta pertinente remarque comme je suis la tête dans le guidon java j'oublie qu'en cli, tout est si simple :)))
donc le résultat :
macave=# d t_appellations_alt Table "public.t_appellations_alt" Column | Type | Modifiers -----------+-----------------------+------------------------------------ ----------------------------- alt_id | integer | not null default nextval('t_appellations_alt_alt_id_seq'::text) reg_id | integer | wcol_id | integer | alt_desc | character varying(64) | not null default ''::character varying alt_notes | text | Indexes: "t_appelations_alt_pkey" primary key, btree (alt_id) "t_appelations_alt_alt_desc_key" unique, btree (alt_desc)
donc la nouvelle séquence avec la bonne orthographe a bien été prise en compte...
il n'y a que les _pkeys qui sont mal orthographiées
en fait je voudrais retourner la valeur du dernier "alt_id" (par exemple) après une insertion, depuis java, j'ai essayé le "select MAX(mon_id) from table machin" ça marche tant que non paramétré, si je fais :
avec exactement le même "mon_id", ça ne me retourne rien, pas même une erreur...
alors comme déjà ce n'est pas très élégant de faire ça je voudrais faire :
select currval('t_appellations_alt_alt_id_seq') ;
mais, comme je ne sais pas retrouver (par java, pas en cli où c'est facile) 't_appellations_alt_alt_id_seq' à partir de 'alt_id' (mais ça doit-être possible...) il faut absolument que mes noms de cols et tables soient corrects de telle manière que je puisse créer la string : 't_appellations_alt_alt_id_seq' à partir de :
't_appellations_alt' et de : 'alt_id' car je ne veux pas avoir de hash table qui me donne la séquence en fonction de l'id (maintenance oblige)
l'idéal, pour moi, étant de retrouver le nom de la colonne séquence à partir du nom de la colonne id et de "pg_attrdef", "pg_attribute" et de "pg_class" (ou autres) ce qui rendrait mon appli indépendante du choix des noms et donc accessoirement de mes fotes d'aurtograffes...
-- yt
yvon.thoravalNO-SPAM
Banoît Barbier wrote:
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
Bon finalement j'ai trouvé le select qui permet de retrouver l'association col_id et sequence :
SELECT attname, adsrc FROM pg_attrdef, pg_attribute WHERE ((pg_attrdef.adnum = pg_attribute.attnum) and (pg_attrdef.adrelid pg_attribute.attrelid) and (pg_attrdef.adsrc ~ 't_bottles_btl'));
MAIS je n'ai pas trouvé comment relier le nom d'une colonne au nom de la table par l'intermédiaire de attrelid ou adrelid càd le n° de la table... -- yt
Banoît Barbier <benoit.br@skynet.be> wrote:
Pour retrouver le nom d'une séquence utilisée par une table il y a
plus facile:
Bon finalement j'ai trouvé le select qui permet de retrouver
l'association col_id et sequence :
SELECT attname, adsrc FROM pg_attrdef, pg_attribute WHERE
((pg_attrdef.adnum = pg_attribute.attnum) and (pg_attrdef.adrelid pg_attribute.attrelid) and (pg_attrdef.adsrc ~ 't_bottles_btl'));
MAIS je n'ai pas trouvé comment relier le nom d'une colonne au nom de la
table par l'intermédiaire de attrelid ou adrelid càd le n° de la
table...
--
yt
Pour retrouver le nom d'une séquence utilisée par une table il y a plus facile:
Bon finalement j'ai trouvé le select qui permet de retrouver l'association col_id et sequence :
SELECT attname, adsrc FROM pg_attrdef, pg_attribute WHERE ((pg_attrdef.adnum = pg_attribute.attnum) and (pg_attrdef.adrelid pg_attribute.attrelid) and (pg_attrdef.adsrc ~ 't_bottles_btl'));
MAIS je n'ai pas trouvé comment relier le nom d'une colonne au nom de la table par l'intermédiaire de attrelid ou adrelid càd le n° de la table... -- yt