Обсуждение: Doc bug (?) in rules vs triggers

Поиск
Список
Период
Сортировка

Doc bug (?) in rules vs triggers

От
andrew@pillette.com
Дата:
Chapter 13 of the documentation on Rules versus Triggers says in part

"On the other hand a trigger that is fired on INSERT on a view can do the same as a rule, put the data somewhere else
andsuppress the insert in the view." 

However, it does not appear to be possible to set a trigger on a view, so this means something else. (I'd like to set a
triggeron a view, because the replacement INSERT I wish to make is easier to write in PLPGSQL than plain SQL.) 


Re: Doc bug (?) in rules vs triggers

От
Tom Lane
Дата:
andrew@pillette.com writes:
> Chapter 13 of the documentation on Rules versus Triggers says in part
> "On the other hand a trigger that is fired on INSERT on a view can do
> the same as a rule, put the data somewhere else and suppress the
> insert in the view."

> However, it does not appear to be possible to set a trigger on a view,
> so this means something else.

I think it means "this documentation is out of date" :-(.

Once long ago a view was a regular table with an ON SELECT rule, and so
you could in fact put triggers to catch attempted inserts rather than
relying on an ON INSERT rule.  This was removed because it was too
failure-prone --- people who had misdefined their triggers kept
wondering where their data went, when it in fact went into the view
table and could never be seen again because of the ON SELECT rule.
By requiring an ON INSERT rule, we can mechanically check for failure
to redirect the insert.  I think there were some implementation
considerations motivating that change, as well.

            regards, tom lane