我想獲取Postgres中序列名稱的列表。如何獲取Postgres中的序列名稱列表?
在Oracle中,我可以使用:
select sequence_name
from user_sequences
但Postgres的,當我用這句話總是引發錯誤:找不到USER_SEQUENCES。
我該如何在Postgres中做到這一點?
我想獲取Postgres中序列名稱的列表。如何獲取Postgres中的序列名稱列表?
在Oracle中,我可以使用:
select sequence_name
from user_sequences
但Postgres的,當我用這句話總是引發錯誤:找不到USER_SEQUENCES。
我該如何在Postgres中做到這一點?
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';
或嘗試運行PSQL作爲psql -U username -E
其次\ds
。這會向您顯示用於生成結果的查詢。
您可以使用:
select sequence_schema, sequence_name
from information_schema.sequences;
,將返回序列訪問列表,以當前用戶,而不是由他所擁有的那些。
select n.nspname as sequence_schema,
c.relname as sequence_name,
u.usename as owner
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
join pg_user u on u.usesysid = c.relowner
where c.relkind = 'S'
and u.usename = current_user;
在Postgres裏,一個用戶可以擁有多個模式中的對象(例如序列),而不是:
如果要列出序列由你需要加入pg_class
,pg_namespace
和pg_user
當前用戶擁有只是「他自己的」,所以你還需要檢查序列創建的模式。
手冊中的更多細節:
我想這像甲骨文,通過SQL語句來選擇序列名。 – liu246437
@ liu246437我編輯了答案。這個查詢應該適合您正在搜索的內容。 – DunnoHowToCode
我嘗試了你的方法,我明白了,謝謝 – liu246437