PostgreSQL drop 函数执行给定的函数并且不删除触发函数
PostgreSQL drop function executes given function and doesn't remove trigger function
我用下面的代码创建了触发器函数:
CREATE OR REPLACE FUNCTION snitch() RETURNS event_trigger AS $$
BEGIN
select pgr_createTopology('public.roads_noded', 0.001);
END;
$$ LANGUAGE plpgsql;
CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTE FUNCTION snitch();
它位于 public 架构中。现在我想删除这个函数,但是当我尝试删除它时,它会执行给定的函数并且服务器挂起。重启服务器后,同样的事情发生了。我无法创建或删除任何 table。有没有办法去掉这个触发函数?
DROP FUNCTION
命令本身是一个 DDL 命令,因此触发器将会触发。您应该首先使用 DROP EVENT TRIGGER
删除触发器,然后使用函数。
我用下面的代码创建了触发器函数:
CREATE OR REPLACE FUNCTION snitch() RETURNS event_trigger AS $$
BEGIN
select pgr_createTopology('public.roads_noded', 0.001);
END;
$$ LANGUAGE plpgsql;
CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTE FUNCTION snitch();
它位于 public 架构中。现在我想删除这个函数,但是当我尝试删除它时,它会执行给定的函数并且服务器挂起。重启服务器后,同样的事情发生了。我无法创建或删除任何 table。有没有办法去掉这个触发函数?
DROP FUNCTION
命令本身是一个 DDL 命令,因此触发器将会触发。您应该首先使用 DROP EVENT TRIGGER
删除触发器,然后使用函数。