2014-01-16 48 views
0

我有触发程序:更换触发程序,但不删除触发器

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

    // Do something :-) 

    RAISE NOTICE 'Done'; 

RETURN NEW; 
END; 
$BODY$ 
LANGUAGE plpgsql; 

它用于审计和我的数据库每一个表有触发器,它调用的程序。

我想要做的是删除“提高通知”行 - 似乎很简单,但它不是..我试图插入新的过程数据库没有行,认为“创建od 更换“”会做这项工作,但在我的数据库中仍然只有旧版本。

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

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

还是有另一种方法,使“强制替代”

DBMS:PostgreSQL的9.2.6

回答

0

我试图做的是消除“养通知”线 - 看似简单,但事实并非如此。 。我试图在没有行的情况下向数据库插入新的过程,认为“create od REPLACE”会完成这项工作,但仍然只有旧版本我的数据库。

没有。要么你在错误的数据库中安装了新功能,错误的模式,名称中有拼写错误,未能提交更改或错过了错误消息。

我经常替换触发函数,它们与其他函数没有区别 - CREATE OR REPLACE工作得很好。

+0

我确定db,schema等是正确的。仍然是同样的问题。奇怪。 – cathulhu

+0

放在一起显示问题的自包含示例,它会算作一个错误。我的猜测是你将无法重现它。 –