Short question...
Must one use the DROP TRIGGER operation: https://www.postgresql.org/docs/9.1/static/sql-droptrigger.html
Or would simply deleting entries from the pg_trigger table suffice?
The proper way is the only one. Use drop trigger
, even if the deleting from pg_trigger
seems to work fine. In fact it does not. After you manually delete an entry from pg_trigger
you can get the error (not immediately but when you least expect it) like this:
ERROR: could not find tuple for trigger 123456
This is because of Postgres stores information about triggers on a table also in pg_depend
. As an exemplary result, you will not be able to drop the table.
Update. Some explanations concerning dependencies between a trigger and its associated function.
It is not a trigger function that depends on a trigger, but vice versa, a trigger depends on a function. So if you want to drop a trigger and a trigger function at once you should drop the function with the option cascade
, e.g.:
drop function a_trigger_function() cascade;
Without the option, you cannot drop a trigger function when a trigger exists (before a trigger was dropped). So statements in another answer to the question are misleading.
Note also that there are situations in which removing a function simultaneously with a trigger is not appropriate because a function may be used in many triggers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With