我在PostgreSQL中有150多个模式,每次执行一个动作时,都会创建一个新的模式,并带有一些带有数字的随机名称。很难找到是创建的新模式。
我使用\dn
列出PostgreSQL中的模式,但是它没有以创建的顺序显示模式。如何列出最近创建的架构或按创建日期排序的架构?
答案 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添加另一个触发器,以确保清理了表。