我有触发程序:
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
答案 0 :(得分:0)
我要做的是删除“提高通知”行 - 似乎很简单,但事实并非如此......我试图在没有行的情况下向数据库插入新程序,认为“创建od REPLACE”会做的工作,但我的数据库中仍然只有旧版本。
不。您已将新功能安装在错误的数据库中,错误的架构,名称中输入错误,未能提交更改或错过错误消息。
我经常更换触发器功能,它们与任何其他功能没有区别 - CREATE OR REPLACE
工作得很好。