답변:
Stackoverflow에서 이것을 찾았습니다 : https : //.com/questions/2577168/postgresql-table-creation-time
그렇습니다. 한계가 있습니다.
보다
/programming/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752
추가 정보
WITH CTE AS
(
SELECT
table_name
,
(
SELECT
MAX(pg_ls_dir::int)::text
FROM pg_ls_dir('./base')
WHERE pg_ls_dir <> 'pgsql_tmp'
AND pg_ls_dir::int <= (SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name)
) as folder
,(SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name) filenode
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
AND table_schema = 'public'
)
SELECT
table_name
,(
SELECT creation
FROM pg_stat_file(
'./base/' || folder || '/' || filenode
)
) as creation_time
FROM CTE;
아니요, 아는 한 불가능합니다.
이 값은 시스템 테이블에 저장되지 않습니다 (하지만 좋을 것입니다).
이 쿼리
select pslo.stasubtype, pc.relname, pslo.statime
from pg_stat_last_operation pslo
join pg_class pc on(pc.relfilenode = pslo.objid)
and pslo.staactionname = 'CREATE'
order by pslo.statime desc
확실히 도움이 될 것입니다.
주의 : 그것은 녹색 플럼에서만 작동합니다.
테이블 작성 시간을 얻을 수는 없지만 데이터베이스를 정기적으로 청소하면 최근에 작성된 테이블 목록을 실제로 얻을 수 있습니다. 이 쿼리를 사용할 수 있습니다 : select * from pg_stat_user_tables 여기서 last_vacuum> now ()-interval '3 days'; 필요에 따라 간격을 변경할 수 있습니다.