-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > I would normally just set minimum value to something greater than what > already in the table, That's the way to go. > but the manually keyed values are all over the place, and I guess I'd > really like to remove the gaps in the current values. You'll have to do that yourself, perhaps with a plpgsql function or an perl script. Here's a quick little function that should do the job: give it a tablename and a column. The column must contain unique, positive ids. After running, just slap a default nextval on the column with a sequence starting at one above the number returned and you're done. CREATE OR REPLACE FUNCTION removeholes(text,text) RETURNS INT LANGUAGE plpgsql AS $$ DECLARE T ALIAS FOR $1; C ALIAS FOR $2; myst TEXT; mycount INT := 0; myrec RECORD; BEGIN myst := 'UPDATE '||T||' SET '||C||' = -'||C; EXECUTE myst; myst := 'SELECT '||C||' FROM '||T||' ORDER BY '||C||' DESC '; FOR myrec IN EXECUTE myst LOOP mycount := mycount + 1; myst := 'UPDATE '||T||' SET '||C||' = '||mycount||' WHERE '||C||' = '||myrec.id; EXECUTE myst; END LOOP; RETURN mycount; END; $$; - -- Greg Sabino Mullane greg@xxxxxxxxxxxx PGP Key: 0x14964AC8 200506180923 http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8 -----BEGIN PGP SIGNATURE----- iD8DBQFCtCfbvJuQZxSWSsgRAuBJAJ4q9STr6u6fhssye0l8FitirLZwzQCgwR8g G2+MqdQquDJz8O3G6zBsVS4= =MfLV -----END PGP SIGNATURE-----