我正在嘗試撰寫一個查詢,我可以在監視器中使用它來警告我,如果我接近超過一系列 ID 的 32 位整數空間。
我知道我可以獲得所有表格的串列,如下所示:
SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public'
然后遍歷每一個,查詢(例如):
SELECT last_value FROM users_id_seq
- 有沒有辦法將它們組合成一個查詢?
- 有沒有辦法排除已經使用 bigint 作為 ID 的表?
uj5u.com熱心網友回復:
要查找與序列“相關”的表,您可以使用以下內容:
SELECT seq_ns.nspname as sequence_schema,
seq.relname as sequence_name,
tab_ns.nspname as table_schema,
tab.relname as related_table,
s.last_value,
s.max_value
FROM pg_catalog.pg_class seq
INNER JOIN pg_catalog.pg_namespace seq_ns ON seq.relnamespace = seq_ns.oid
INNER JOIN pg_catalog.pg_depend d ON d.objid = seq.oid AND d.deptype = 'a'
INNER JOIN pg_catalog.pg_class tab ON d.objid = seq.oid AND d.refobjid = tab.oid
INNER JOIN pg_catalog.pg_namespace tab_ns ON tab.relnamespace = tab_ns.oid
INNER JOIN pg_catalog.pg_sequences s ON s.schemaname = seq_ns.nspname AND s.sequencename = seq.relname
WHERE seq.relkind = 'S'
AND seq_ns.nspname = '<your-schema-name>';
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/410429.html
標籤:
