在PostgreSQL中获取最近创建的架构

时间:2019-09-11 06:04:02

标签: database postgresql

我在PostgreSQL中有150多个模式,每次执行一个动作时,都会创建一个新的模式,并带有一些带有数字的随机名称。很难找到是创建的新模式。

我使用\dn列出PostgreSQL中的模式,但是它没有以创建的顺序显示模式。如何列出最近创建的架构或按创建日期排序的架构?

2 个答案:

答案 0 :(得分:2)

任何模式都有oid列-数字唯一标识符(仅增加)。因此,您可以使用ORDER BY oid DESC

SELECT * FROM pg_namespace ORDER BY oid DESC LIMIT 10;

答案 1 :(得分:0)

Pavel的回答很好,可能会为您提供所需的一切,但是如果您想要更大的灵活性,我建议您使用事件触发器:

CREATE TABLE schema_creation_history 
  (schema regnamespace primary key, 
   created timestamp with time zone not null default now()
);

CREATE FUNCTION log_schema_create() RETURNS event_trigger
LANGUAGE plpgsql AS
$$
BEGIN
  INSERT INTO schema_creation_history (schema) SELECT objid::regnamespace FROM pg_event_trigger_ddl_commands();
END;
$$
;

CREATE EVENT TRIGGER schema_create_trigger 
  ON ddl_command_end 
  WHEN TAG IN ('CREATE SCHEMA')
  EXECUTE FUNCTION log_schema_create();

# create schema test;
CREATE SCHEMA
# select * from schema_creation_history ;
 schema |           created
--------+------------------------------
 test   | 2019-09-11 12:32:21.16346+00
(1 row)

您可以为DROP SCHEMA添加另一个触发器,以确保清理了表。