Re: easy way to insert same value into 2 columns - Mailing list pgsql-general

From Sebastian Boeck
Subject Re: easy way to insert same value into 2 columns
Date
Msg-id 3F8E87DD.8030404@freenet.de
Whole thread Raw
In response to Re: easy way to insert same value into 2 columns  (Richard Huxton <dev@archonet.com>)
Responses Re: easy way to insert same value into 2 columns
List pgsql-general
Richard Huxton wrote:
> On Thursday 16 October 2003 11:11, Sebastian Boeck wrote:
>
>>Csaba Nagy wrote:
>>
>>>For your specific question I don't know the answer.
>>>
>>>For this particular case you could use:
>>>
>>>create table your_table (
>>>  id integer default nextval ('public.zeit_id_seq'::text),
>>>  pos_id integer default currval ('public.zeit_id_seq'::text),
>>>  ...
>>>);
>>>
>>>That would work fine as long as you use inserts which don't specify id
>>>if pos_id is not specified (otherwise the currval will throw you an
>>>error cause it cannot be called without nextval being called).
>>>
>>>HTH,
>>>Csaba.
>>
>>Thanks a lot, but is it save to use?
>
>
> Not really.
>
>
>>Do i always get the same value, even if an other insert is changing
>>the sequence >public.zeit_id_seq< just at the same time?
>
>
> Other processes can't interfere - the whole point of sequences is that they
> are safe for this sort of thing.
>
> Where you will have problems is that if one of the developers decides it's
> more efficient to process fields backwards (zzz...pos_id, id) rather than
> forwards (id, pos_id, ...zzz) then it will break.
>
> Use a trigger here. If nothing else so you can stop people like me doing:
>
> INSERT INTO your_table (id,pos_id) VALUES (-1,DEFAULT);
>

Is it possible to create the function called by a trigger entirely
in SQL, or do i have to use another language?

Regards

Sebastian


pgsql-general by date:

Previous
From: Sebastian Boeck
Date:
Subject: Re: easy way to insert same value into 2 columns
Next
From: Shridhar Daithankar
Date:
Subject: Re: easy way to insert same value into 2 columns