Re: [HACKERS] Weired FK problem
От | wieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: [HACKERS] Weired FK problem |
Дата | |
Msg-id | m11wVvK-0003kGC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Re: [HACKERS] Weired FK problem (Bruce Momjian <pgman@candle.pha.pa.us>) |
Ответы |
Re: [HACKERS] Weired FK problem
|
Список | pgsql-hackers |
Bruce Momjian wrote: > > Looks like it works. I just tried a related item: > > > Now the other way round: > > > > (S1) insert into t1 values (1); > > (S1) begin; > > > (S2) delete from t1 where a = 1; > > (S1) insert into t2 values (1); > > I swapped the above two items, and the INSERT properly failed the > contraint. > > > > > (S2) -- Session is now blocked > > > > (S1) commit; > > > > (S2) -- Session continues without error > > I was a little unsure how trigger visibility was going to handle cases > where the constraint failure happened after the other transaction > started, but it seems to work fine. I already committed the visibility overriding by RI triggers for time qualification. Maybe you're seeing the results of this little hack. > It is only the trigger that has full visibility, not the statements in > the query, right? That's the behaviour I wanted to get from it. RI triggers need to see what's committed and what their own transaction did so far. That's HeapTupleSatisfiesNow(). Since they lock everything they access, they simply force the old (pre MVCC) behaviour - wait if something is actually in use until the other transaction ends. No snapshots, no pain. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
В списке pgsql-hackers по дате отправления: