Обсуждение: problem wit hsequence as primary key

Поиск
Список
Период
Сортировка

problem wit hsequence as primary key

От
Rob Brown-Bayliss
Дата:
Hi, I was insertingrows into a table and had this error:

Cannot insert a duplicate key into unique index stock_transactions_pkey

Now the primary key is inserted by this function:

CREATE FUNCTION "set_primary_key" () RETURNS text AS '
DECLARE
    sequence_number    text;
    location_number    text;
    retval text;
BEGIN
    location_number := to_char(get_loc_key(),''999MI'');
    location_number := trim(both '' '' from location_number);
    sequence_number := to_char(nextval(''location_seq''),''99999MI'');
    sequence_number := trim(both '' '' from sequence_number);
    retval := location_number || ''-'' || sequence_number;
    RETURN retval;
END;
' LANGUAGE 'plpgsql';

which results in valuse like 12-1234 as a text primary key.

The location_seq is up to 100005 at the moment so how am I getting
duplicate primary keys?


--

*
*  Rob Brown-Bayliss

*

Re: problem wit hsequence as primary key

От
Tom Lane
Дата:
Rob Brown-Bayliss <rob@zoism.org> writes:
>     sequence_number := to_char(nextval(''location_seq''),''99999MI'');

> The location_seq is up to 100005 at the moment so how am I getting
> duplicate primary keys?

Time for more 9's in that to_char format, perhaps?

            regards, tom lane

Re: problem wit hsequence as primary key

От
Rob Brown-Bayliss
Дата:
On Sat, 2002-07-27 at 03:20, Tom Lane wrote:
> Rob Brown-Bayliss <rob@zoism.org> writes:
> >     sequence_number := to_char(nextval(''location_seq''),''99999MI'');
>
> > The location_seq is up to 100005 at the moment so how am I getting
> > duplicate primary keys?
>
> Time for more 9's in that to_char format, perhaps?
>

Yeah :o)

I had a break and a cup o tea and then it was obvious...  Thanks


Now a nother question, useinga text based primary on large tables.  Will
this slow down queries or does it not really matter?

Thanks

--

*
*  Rob Brown-Bayliss
*