Postgresql 删除的对象:默认值。用于public.obce.id 注意:删除表删除对象:表约束公共_obce_pkey on public.obce 注意:DROP TABLE DROP object:index public.\u obce\u pkey public.\u obce\u pkey 注意:拖放表拖放对象:物化视图public.obce_stredocesky_kraj public.obce_stredocesky_kraj 注意:DROP TABLE DROP object:index public.obce_stredocesky_kraj_nazev_idx public.obce_stredocesky_kraj_nazev_idx 注意:放置表放置的对象:键入public.obce_stredocesky_kraj public.obce_stredocesky_kraj 注意:放置表放置的对象:键入public.\u obce\u stredocesky\u kraj public.obce\u stredocesky\u kraj[] 注意:删除表删除对象:规则。public.obce_stredocesky_kraj上的“返回” 注意:拖放表拖放对象:类型public.obce public.obce 注意:DROP TABLE DROP object:类型public.\u obce public.obce[] 升降台

Postgresql 删除的对象:默认值。用于public.obce.id 注意:删除表删除对象:表约束公共_obce_pkey on public.obce 注意:DROP TABLE DROP object:index public.\u obce\u pkey public.\u obce\u pkey 注意:拖放表拖放对象:物化视图public.obce_stredocesky_kraj public.obce_stredocesky_kraj 注意:DROP TABLE DROP object:index public.obce_stredocesky_kraj_nazev_idx public.obce_stredocesky_kraj_nazev_idx 注意:放置表放置的对象:键入public.obce_stredocesky_kraj public.obce_stredocesky_kraj 注意:放置表放置的对象:键入public.\u obce\u stredocesky\u kraj public.obce\u stredocesky\u kraj[] 注意:删除表删除对象:规则。public.obce_stredocesky_kraj上的“返回” 注意:拖放表拖放对象:类型public.obce public.obce 注意:DROP TABLE DROP object:类型public.\u obce public.obce[] 升降台,postgresql,plpgsql,Postgresql,Plpgsql,看 谢谢,非常有趣,但我需要删除的表的名称,现在不支持TG_OBJECTNAME!将来,我将使用ign事件触发器修改我的函数。现在我发现allow_system_table_mods=on可以添加到postgres.conf,但您如何告诉我这不是一个正确的模式:-(如果我只在创建触发器时激活它,然后禁用它,那么触发器的工作原理是一样的?@user3297525:删除的表名是已知的-请参阅更新的replyok,但删除的表不能移动到另一个模式(alter table t set schema


谢谢,非常有趣,但我需要删除的表的名称,现在不支持TG_OBJECTNAME!将来,我将使用ign事件触发器修改我的函数。现在我发现allow_system_table_mods=on可以添加到postgres.conf,但您如何告诉我这不是一个正确的模式:-(如果我只在创建触发器时激活它,然后禁用它,那么触发器的工作原理是一样的?@user3297525:删除的表名是已知的-请参阅更新的replyok,但删除的表不能移动到另一个模式(alter table t set schema s)因为postgres现在不存在表t。我如何才能在删除操作之前触发触发器?可能你不能这样做。这太难了。harakiri。如果你需要对数据库结构执行更复杂的操作,那么应用程序级别比触发器更好。非常有意思,谢谢,但我需要删除的表和TG的名称_OBJECTNAME现在不受支持!将来我将使用Sign事件触发器修改我的函数。现在我发现allow_system_table_mods=on可添加到postgres.conf,但您如何告诉我这不是正确的模式:-(如果我仅在创建触发器时激活它,然后禁用它,则触发器的工作原理相同?@user3297525:已知删除的表名-请参阅更新的replyok,但无法将删除的表移动到另一个架构(alter table t set schema s)因为postgres现在不存在表t。我如何才能在删除操作之前触发触发器?可能您不能这样做。这太难了。harakiri。如果您需要对数据库结构执行更复杂的操作,那么应用程序级别优于触发器。
CREATE OR REPLACE FUNCTION foo() RETURNS void AS $$
DECLARE

BEGIN
EXECUTE 'CREATE TABLE pg_catalog.tab(a integer)';   
        RETURN;

END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION a() RETURNS void AS $$
DECLARE
BEGIN

  EXECUTE 'CREATE TRIGGER "tt_drop" BEFORE DELETE ON pg_catalog.pg_tables EXECUTE PROCEDURE public.b()';
  RETURN;

END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION test_event_trigger_for_drops()
        RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE
    obj record;
BEGIN
    FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    LOOP
        RAISE NOTICE '% dropped object: % %.% %',
                     tg_tag,
                     obj.object_type,
                     obj.schema_name,
                     obj.object_name,
                     obj.object_identity;
    END LOOP;
END
$$;

CREATE EVENT TRIGGER test_event_trigger_for_drops
   ON sql_drop
   EXECUTE PROCEDURE test_event_trigger_for_drops();

postgres=# DROP TABLE obce CASCADE;
NOTICE:  drop cascades to materialized view obce_stredocesky_kraj
NOTICE:  DROP TABLE dropped object: table public.obce public.obce
NOTICE:  DROP TABLE dropped object: index public.obce_okres_id_idx public.obce_okres_id_idx
NOTICE:  DROP TABLE dropped object: table constraint public.<NULL> obce_okres_id_fk on public.obce
NOTICE:  DROP TABLE dropped object: trigger <NULL>.<NULL>  "RI_ConstraintTrigger_a_46471" on public.okresy
NOTICE:  DROP TABLE dropped object: trigger <NULL>.<NULL> "RI_ConstraintTrigger_a_46472" on public.okresy
NOTICE:  DROP TABLE dropped object: trigger <NULL>.<NULL> "RI_ConstraintTrigger_c_46473" on public.obce
NOTICE:  DROP TABLE dropped object: trigger <NULL>.<NULL> "RI_ConstraintTrigger_c_46474" on public.obce
NOTICE:  DROP TABLE dropped object: sequence public.obce_id_seq public.obce_id_seq
NOTICE:  DROP TABLE dropped object: type public.obce_id_seq public.obce_id_seq
NOTICE:  DROP TABLE dropped object: default value <NULL>.<NULL> for public.obce.id
NOTICE:  DROP TABLE dropped object: table constraint public.<NULL> _obce_pkey on public.obce
NOTICE:  DROP TABLE dropped object: index public._obce_pkey public._obce_pkey
NOTICE:  DROP TABLE dropped object: materialized view public.obce_stredocesky_kraj public.obce_stredocesky_kraj
NOTICE:  DROP TABLE dropped object: index public.obce_stredocesky_kraj_nazev_idx public.obce_stredocesky_kraj_nazev_idx
NOTICE:  DROP TABLE dropped object: type public.obce_stredocesky_kraj public.obce_stredocesky_kraj
NOTICE:  DROP TABLE dropped object: type public._obce_stredocesky_kraj public.obce_stredocesky_kraj[]
NOTICE:  DROP TABLE dropped object: rule <NULL>.<NULL> "_RETURN" on public.obce_stredocesky_kraj
NOTICE:  DROP TABLE dropped object: type public.obce public.obce
NOTICE:  DROP TABLE dropped object: type public._obce public.obce[]
DROP TABLE