Re: easy way to insert same value into 2 columns
От | Sebastian Boeck |
---|---|
Тема | Re: easy way to insert same value into 2 columns |
Дата | |
Msg-id | 3F8E87DD.8030404@freenet.de обсуждение исходный текст |
Ответ на | Re: easy way to insert same value into 2 columns (Richard Huxton <dev@archonet.com>) |
Ответы |
Re: easy way to insert same value into 2 columns
|
Список | 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 по дате отправления: