Обсуждение: Re: How to create trigger if it does not exist
Andrus ha escrito: > CREATE TRIGGER mycheck_trigger BEFORE INSERT OR UPDATE ON mytbl > FOR EACH ROW EXECUTE PROCEDURE mycheck_pkey(); > > aborts transaction if trigger already exists. > > There in no CREATE OR REPLACE TRIGGER command in PostgreSQL > > How to create trigger only when it does not exist ? > > Andrus. DROP TRIGGER IF EXISTS... See: http://www.postgresql.org/docs/8.2/static/sql-droptrigger.html
On May 26, 5:58 pm, "Andrus" <kobrule...@hot.ee> wrote: > Thank you. > This doc says that dropping trigger drops depending objects also. Only if you use CASCADE (default is RESTRICT).
"Rodrigo De Le�n" <rdeleonp@gmail.com> kirjutas s�numis news:1180317464.302359.95000@k79g2000hse.googlegroups.com... > On May 26, 5:58 pm, "Andrus" <kobrule...@hot.ee> wrote: >> Thank you. >> This doc says that dropping trigger drops depending objects also. > > Only if you use CASCADE (default is RESTRICT). > If I do not use CASCADE deleting trigger fail if there are objects which depend on trigger. So I MUST use cascase. Andrs.
>> How to create trigger only when it does not exist ? > DROP TRIGGER IF EXISTS... > > See: > > http://www.postgresql.org/docs/8.2/static/sql-droptrigger.html Thank you. This doc says that dropping trigger drops depending objects also. Which objects depend on the user-defined trigger so that they are also dropped ? Andrus.
Hi Guys, Using CASCADE can be a bit dangerous as there might be other tables, functions, views etc. that will be dropped but they are not meant to be. Try this: DO $$ BEGIN IF NOT EXISTS(SELECT * FROM information_schema.triggers WHERE event_object_table = 'tablename' AND trigger_name = 'triggername' ) THEN <Insert your create trigger syntx here>; END IF ; END; $$ -- View this message in context: http://postgresql.1045698.n5.nabble.com/How-to-create-trigger-if-it-does-not-exist-tp1882226p5745434.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.