更换触发器过程而不删除触发器

时间:2014-01-16 14:45:47

标签: postgresql triggers plpgsql postgresql-9.2

我有触发程序:

CREATE OR REPLACE FUNCTION my_func() RETURNS trigger AS
$BODY$

    // Do something :-)

    RAISE NOTICE 'Done';

RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;

它用于审计,我的数据库中的每个表都有触发调用该过程的触发器。

我要做的是删除“提高通知”行 - 似乎很简单,但事实并非如此......我试图在没有该行的情况下将新程序插入数据库,认为“创建od REPLACE “会完成工作,但我的数据库中仍然只有旧版本。

我认为问题是由与程序相关的触发器引起的。

我是否必须1.删除所有触发器(超过80个表=> 80个触发器:(),2。用新版本替换过程,3。重新创建触发器?

还是有另一种方法可以“强制替换”吗?

DBMS:PostgreSQL 9.2.6

1 个答案:

答案 0 :(得分:0)

  

我要做的是删除“提高通知”行 - 似乎很简单,但事实并非如此......我试图在没有行的情况下向数据库插入新程序,认为“创建od REPLACE”会做的工作,但我的数据库中仍然只有旧版本。

不。您已将新功能安装在错误的数据库中,错误的架构,名称中输入错误,未能提交更改或错过错误消息。

我经常更换触发器功能,它们与任何其他功能没有区别 - CREATE OR REPLACE工作得很好。