select inet_client_addr()
create table oz.important_table(id numeric);
insert into oz.important_table values(1);
select * from oz.important_table
create view oz.v_test as select * from oz.important_table;
drop view oz.v_test;
select * from oz.v_test
CREATE OR REPLACE FUNCTION public.trg_log_drop()
RETURNS event_trigger
LANGUAGE plpgsql
AS $function$
DECLARE
obj record;
BEGIN
FOR obj in SELECT * FROM pg_event_trigger_dropped_objects() LOOP
IF obj.object_type in ('table','view') THEN
RAISE NOTICE 'TABLE % DROPPED by transaction % (pre-commit)',
obj.object_identity, txid_current();
INSERT INTO public.droplog (tablename, dropxid,user_ip)
VALUES (obj.object_identity, txid_current(),inet_client_addr());
END IF;
END LOOP;
END;
$function$
CREATE EVENT TRIGGER table_drop_logger
ON sql_drop
WHEN TAG IN ('DROP TABLE','DROP VIEW')
EXECUTE PROCEDURE public.trg_log_drop()
CREATE TABLE public.droplog (
ts timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
tablename text NOT NULL,
dropxid bigint,
user_ip text
);
select * from public.droplog
drop table oz.important_table;
create table oz.important_table(id numeric);
insert into oz.important_table values(1);
select * from oz.important_table
create view oz.v_test as select * from oz.important_table;
drop view oz.v_test;
select * from oz.v_test
CREATE OR REPLACE FUNCTION public.trg_log_drop()
RETURNS event_trigger
LANGUAGE plpgsql
AS $function$
DECLARE
obj record;
BEGIN
FOR obj in SELECT * FROM pg_event_trigger_dropped_objects() LOOP
IF obj.object_type in ('table','view') THEN
RAISE NOTICE 'TABLE % DROPPED by transaction % (pre-commit)',
obj.object_identity, txid_current();
INSERT INTO public.droplog (tablename, dropxid,user_ip)
VALUES (obj.object_identity, txid_current(),inet_client_addr());
END IF;
END LOOP;
END;
$function$
CREATE EVENT TRIGGER table_drop_logger
ON sql_drop
WHEN TAG IN ('DROP TABLE','DROP VIEW')
EXECUTE PROCEDURE public.trg_log_drop()
CREATE TABLE public.droplog (
ts timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
tablename text NOT NULL,
dropxid bigint,
user_ip text
);
select * from public.droplog
drop table oz.important_table;