postgresql - 从 Postgres DB 中删除所有触发器?

标签 postgresql triggers

有没有办法从 Postgres 的所有表中删除所有触发器?我知道有一个我可以查看的 pg_trigger 表,但它看起来没有包含足够的信息让我破译我添加到我的表中的触发器。

外键约束似乎也出现在 pg_trigger 表中,我不想删除它。我只想从我的表中删除用户创建的触发器并保留 FK。

有什么建议吗?

最佳答案

谢谢,詹姆斯。

函数来自 Drop ALL triggers from Postgres DB?仅从第一个表中删除出现的事件,并在其他表中保留具有相同名称的触发器。这是固定函数:

CREATE OR REPLACE FUNCTION strip_all_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' 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 ' || triggTableRecord.event_object_table || ';';
        END LOOP;
    END LOOP;

    RETURN 'done';
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

select strip_all_triggers();

关于postgresql - 从 Postgres DB 中删除所有触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093214/

相关文章:

Mysql 触发器性能 vs php 手动插入

php - 通知 : Undefined index 的问题

json - Postgresql - 加密jsonb数据

javascript - 如何在 jQuery 触发器 ("click"上运行回调函数?

postgresql - 错误 : unterminated quoted string at or near

mysql存储过程和触发器

postgresql - Postgres 可以默默地忽略列约束冲突吗?

postgresql - 没有从 postgresql 函数返回任何东西?

ruby-on-rails - Rails 迁移 - 将列从 varchar 更改为 jsonb

jquery - 如何在使用 asp.net 创建动态 div(面板)后调用 jquery 方法