Trigger questions

Started by DAVID ROTHalmost 3 years ago4 messagesgeneral
Jump to latest
#1DAVID ROTH
adaptron@comcast.net

1) Can I create a trigger on a view?
2) Do triggers cascade?

Say I have an insert trigger on a table.
And, I have an insert trigger on a view that references this table
If I do an insert on the view, will both triggers fire?

#2Justin
zzzzz.graf@gmail.com
In reply to: DAVID ROTH (#1)
Re: Trigger questions

On Thu, May 4, 2023 at 9:49 AM DAVID ROTH <adaptron@comcast.net> wrote:

1) Can I create a trigger on a view?
2) Do triggers cascade?

Say I have an insert trigger on a table.
And, I have an insert trigger on a view that references this table
If I do an insert on the view, will both triggers fire?

Can not have triggers on Views, Views use RULES which are DO INSTEAD.
https://www.postgresql.org/docs/current/rules.html

Yes if you have an INSERT/UPDATE/DELETE rule on a view that inserts into a
table then that table's triggers will be executed.

Please note RULES should be avoided beyond the use case for VIEWS. RULES
are executed very early in the query tree; it is not trivial to write rules
on Tables.

Thanks

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Justin (#2)
Re: Trigger questions

On 5/4/23 07:03, Justin wrote:

On Thu, May 4, 2023 at 9:49 AM DAVID ROTH <adaptron@comcast.net
<mailto:adaptron@comcast.net>> wrote:

__
1) Can I create a trigger on a view?
2) Do triggers cascade?

Say I have an insert trigger on a table.
And, I have an insert trigger on a view that references this table
If I do an insert on the view, will both triggers fire?

Can not have triggers on Views,  Views use  RULES  which are DO INSTEAD.
https://www.postgresql.org/docs/current/rules.html
<https://www.postgresql.org/docs/current/rules.html&gt;

That is wrong.

See

https://www.postgresql.org/docs/current/sql-createtrigger.html

The following table summarizes which types of triggers may be used on
tables, views, and foreign tables:

Yes if you have an INSERT/UPDATE/DELETE rule on a view  that inserts
into a table then that table's triggers will be executed.

Please note RULES should  be avoided beyond the use case for VIEWS.
RULES are executed very early in the query tree; it is not
trivial to write rules on Tables.

Thanks

--
Adrian Klaver
adrian.klaver@aklaver.com

#4David G. Johnston
david.g.johnston@gmail.com
In reply to: Justin (#2)
Re: Trigger questions

On Thu, May 4, 2023 at 7:04 AM Justin <zzzzz.graf@gmail.com> wrote:

On Thu, May 4, 2023 at 9:49 AM DAVID ROTH <adaptron@comcast.net> wrote:

1) Can I create a trigger on a view?
2) Do triggers cascade?

Say I have an insert trigger on a table.
And, I have an insert trigger on a view that references this table
If I do an insert on the view, will both triggers fire?

Can not have triggers on Views, Views use RULES which are DO INSTEAD.
https://www.postgresql.org/docs/current/rules.html

Our users need not care or even know about this particular implementation
detail of views. For them, views are a fundamental concept.

The description of create trigger makes is perfectly clear that views are a
valid "table-like" target for a trigger.

CREATE TRIGGER creates a new trigger. CREATE OR REPLACE TRIGGER will

either create a new trigger, or replace an existing trigger. The trigger
will be associated with the specified table, view, or foreign table and
will execute the specified function function_name when certain operations
are performed on that table.

https://www.postgresql.org/docs/current/sql-createtrigger.html

Depending on the view definition, the need for a trigger may be removed
since some views are auto-updatable.

David J.