У нее есть одна особенность - она не удаляет триггеры из базы, даже если мы убираем ее из обработки. Это было бы не страшно, если бы лишние триггеры не замедляли работу базы. Поэтому для удаления bucardo-триггеров была написана следующая функция:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE FUNCTION strip_bucardo_triggers() RETURNS text AS $$ DECLARE | |
triggNameRecord RECORD; | |
triggTableRecord RECORD; | |
BEGIN | |
FOR triggNameRecord IN select distinct(trigger_name) from information_schema.triggers where trigger_schema = 'public' and trigger_name like '%bucardo%' LOOP | |
FOR triggTableRecord IN SELECT distinct(event_object_table) from information_schema.triggers where trigger_name = triggNameRecord.trigger_name LOOP | |
RAISE NOTICE 'Dropping trigger: % on table: %', triggNameRecord.trigger_name, triggTableRecord.event_object_table; | |
EXECUTE 'DROP TRIGGER ' || triggNameRecord.trigger_name || ' ON public.' || triggTableRecord.event_object_table || ';'; | |
END LOOP; | |
END LOOP; | |
RETURN 'done'; | |
END; | |
$$ LANGUAGE plpgsql SECURITY DEFINER; |
Исполнение, как обычно:
select strip_bucardo_triggers();
Комментариев нет:
Отправить комментарий