Re: Triggers on system tables
От | Gavin Sherry |
---|---|
Тема | Re: Triggers on system tables |
Дата | |
Msg-id | Pine.LNX.4.58.0402121523120.26414@linuxworld.com.au обсуждение исходный текст |
Ответ на | Re: Triggers on system tables (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Triggers on system tables
|
Список | pgsql-hackers |
On Wed, 11 Feb 2004, Tom Lane wrote: > Gavin Sherry <swm@linuxworld.com.au> writes: > > My idea is to provide a generic interface which is called inside > > ProcessUtility() after all other functions are called for the particular > > node we're handling. The nodetag itself will be passed to this generic > > function, the function will map nodetag to the relevant underlying system > > table, get the TriggerDesc for the relation and pass it and the relation > > data onto the trigger system. CREATE will call insert triggers, ALTER will > > call update triggers, DROP will call delete. > > I didn't actually much care for the "abstract event" aspect of your > proposal. I think that that presupposes too much about what people > will want to do with such triggers. Plus you still have to define > what data will be supplied to the trigger. I think it's fine to make > these things be real triggers that get real row values. We just have > to pay attention to calling them at a safe time. Okay then. > > One "state problem" that needs to be thought about is that many of the > system functions are implemented in a way that involves multiple steps > of updates on a single row. (In contrast, an ordinary UPDATE command Yeah. That's what I liked about restricting it to CREATE TABLE, etc. We know when the state is consistent. > can't change a row more than once.) The intermediate states of these > rows are probably good examples of the sort of inconsistent data we > don't want to expose --- not only because they are inconsistent, but > because the exact intermediate states are implementation details that > are highly likely to change across versions. Can we collapse such > events together so that the user triggers see only the initial and final > states, and not the intermediate states? Do you have an example at hand of a system function which will face this problem so that I can see what is involved? Thanks, Gavin
В списке pgsql-hackers по дате отправления: