On 14 January 2016 at 11:32, Adrian Klaver <adrian.kla...@aklaver.com> wrote:
> On 01/13/2016 02:24 PM, Tom Lane wrote: > >> "Williamson, Michael" <michael.william...@tamucc.edu> writes: >> >>> I'm attempting to drop a trigger that may or may not exist, so am using >>> the "IF EXISTS" clause. Â This works fine for tables, views, functions, >>> domains, and types, but for some reason seems to be ignored for >>> triggers. Â I'd expect to see more about this online if it were a bug, >>> so I'm thinking I may be missing something obvious. >>> >> >> Example: >>> DROP TRIGGER IF EXISTS udf_customer_update_trigger ON customer; >>> >> >> Expected Output: >>> NOTICE:Â Â trigger "udf_customer_update_trigger" does not exist, skipping >>> >> >> Observed Output: >>> ERROR:Â Â relation "udf_customer_update_trigger" does not exist >>> >> >> Environment: >>> CentOS 6.6 >>> postgresql91-server-9.1.14-1PGDG.rhel6.x86_64 >>> >> >> This has worked the way you're imagining since (I think) 9.4. Before >> that the "if exists" semantics only applied to the trigger itself, >> not to the relation. >> > > Alright now I am confused. Other then changing table to table_name I am > not seeing where the below changed. In both cases a NOTICE is supposed to > be raised. > > http://www.postgresql.org/docs/9.1/interactive/sql-droptrigger.html > > http://www.postgresql.org/docs/9.4/interactive/sql-droptrigger.html Seems to have been changed in http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b152c6cd0de1827ba58756e24e18110cf902182a Perhaps that commit should have also made changes to the documents to change things such as: Do not throw an error if the trigger does not exist. A notice is issued in this case. To Do not throw an error if the trigger or table does not exist. A notice is issued in this case. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services