Re: Re: Using Random Sequence as Key
От | Josh Berkus |
---|---|
Тема | Re: Re: Using Random Sequence as Key |
Дата | |
Msg-id | web-40649@davinci.ethosmedia.com обсуждение исходный текст |
Ответ на | Re: Using Random Sequence as Key ("Bernardo de Barros Franco" <electric_csf@hotmail.com>) |
Ответы |
Re: Re: Using Random Sequence as Key
|
Список | pgsql-sql |
Bernardo, > I needed the random field because if I use serial and the user gets a > 34203 > he's sure that 34202 exists, and that (probably, there where 34202 > inserts > before him (or at least an offset + some)). Using a random just makes > the > user totally blind. > As I said I could use a serial for indexing the table but I NEED the > random > field and I need to to be unique since all the queries will be using > it as a > search parameter. > If inserting this way is slow it's not such a big deal since it's a > small db > and inserts are seldom made. > Thanks in advance for any help. Here's another suggestion for you then: 1. Add a sequence "Sales_sq" 1. write a custom function for new id numbers: CREATE FUNCTION new_sales_id() RETURNS INT4 AS ' DECLAREtimeportion VARCHAR;serialportion INT4; BEGINtimeportion := to_char(current_timestamp, ''ms''); -- (or whatever the abbreviation for 2-digit milliseconds is)serialportion := 100*(nextval(''sales_seq''));RETURN CAST(to_number(timeportion)AS INT4) + serialportion; END; 3. Then set the id column to default to this new function. This would give you (after you correct my mistakes) a number, the first X digits of are Serial, and the last 2 digits based on the server's internal clock. Thus, the numbers would *not* be sequential, and would appear fairly random, but would be unique *without* and expensive check for that value anywhere in the table for each insert. -Josh Berkus ______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete informationtechnology josh@agliodbs.com and data management solutions (415) 565-7293 for law firms, small businesses fax 621-2533 and non-profit organizations. San Francisco
В списке pgsql-sql по дате отправления: