Re: isn't "insert into where not exists" atomic?
От | Alban Hertroys |
---|---|
Тема | Re: isn't "insert into where not exists" atomic? |
Дата | |
Msg-id | E8663619-8809-4465-A0F3-1B20377E0252@solfertje.student.utwente.nl обсуждение исходный текст |
Ответ на | isn't "insert into where not exists" atomic? (Mage <mage@mage.hu>) |
Ответы |
Re: isn't "insert into where not exists" atomic?
|
Список | pgsql-general |
On 3 Feb 2011, at 2:17, Mage wrote: > The trigger looks like: > > create or replace function trf_chat_room_users_insert() returns trigger as $$ > begin > if NEW.active_at is null then > insert into chat_room_users (user_id, chat_room_id, active_at) (select NEW.user_id, NEW.chat_room_id, now()where not exists (select 1 from chat_room_users where user_id = NEW.user_id and chat_room_id = NEW.chat_room_id)); > if not found then > update chat_room_users set active_at = now() where user_id = NEW.user_id and chat_room_id = NEW.chat_room_id; > end if; > return null; > end if; > return NEW; > end; > $$ language plpgsql; Your trigger is the wrong way around. Insert doesn't set found, but update does. Alban Hertroys -- If you can't see the forest for the trees, cut the trees and you'll see there is no forest. !DSPAM:737,4d4a559711736475013765!
В списке pgsql-general по дате отправления: