From: | Pierre-Frédéric Caillaud <lists(at)boutiquenumerique(dot)com> |
---|---|
To: | "pgsql general list" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Generating unique values for TEXT columns |
Date: | 2005-01-03 17:25:50 |
Message-ID: | opsj1epcqqcq72hf@musicbox |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
SELECT max, then treat the string as a sequence of characters and
increment the last character, rippling the carry if there is one :
carry = 1
l = len(s)-1
while carry and l>=0:
c = s[l]
c += carry
if c>max_allowed_char:
c = min_allowed_char
carry = 1
else:
carry = 0
s[l] = c
if carry:
s = min_allowed_char + s
If two transactions do the same at the same time, you're out of luck
though !
*** Better solution :
if the value was human-entered, prefix it with 'H',
if it's auto generated, use 'A' concatenated with the value from a sequence
thus the user-entered values can't clahs with the sequence values ; the
sequence values are by definition unique ; and all is well.
or something like that...
On Mon, 3 Jan 2005 11:53:44 -0500, Frank D. Engel, Jr.
<fde101(at)fjrhome(dot)net> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Is there any "convenient" way to generate (on request) a unique value
> for a TEXT column? I have a situation in which I want users of my
> front-end program to be able to manually enter values for this column,
> but if they leave it blank (in the front-end), to have the database
> automatically fill in a unique value. I would like to restrict the
> unique values to (for example) digits and uppercase letters (this is
> flexible, but the uniqueness of the values should be visually
> discernible, and all characters should be printable).
>
> I know how to do this with a numeric column (I can just SELECT MAX on
> the column and add one, for example), but how can this be done with a
> TEXT column?
>
> Thank you!
>
> - -----------------------------------------------------------
> Frank D. Engel, Jr. <fde101(at)fjrhome(dot)net>
>
> $ ln -s /usr/share/kjvbible /usr/manual
> $ true | cat /usr/manual | grep "John 3:16"
> John 3:16 For God so loved the world, that he gave his only begotten
> Son, that whosoever believeth in him should not perish, but have
> everlasting life.
> $ -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.4 (Darwin)
>
> iD8DBQFB2XiY7aqtWrR9cZoRAqATAJ46xJ3bwsZVpIda0iMSSdcm3/8YKACePSC3
> 2JAngWmFOlkzC5fNE6HKYMU=
> =pblY
> -----END PGP SIGNATURE-----
>
>
>
> ___________________________________________________________
> $0 Web Hosting with up to 120MB web space, 1000 MB Transfer
> 10 Personalized POP and Web E-mail Accounts, and much more.
> Signup at www.doteasy.com
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Fuhr | 2005-01-03 17:35:43 | Re: help with a stored procedure |
Previous Message | Pierre-Frédéric Caillaud | 2005-01-03 17:20:00 | Re: Merging Data from Multiple DB |