2016-07-05 66 views
3

我想獲取Postgres中序列名稱的列表。如何獲取Postgres中的序列名稱列表?

在Oracle中,我可以使用:

select sequence_name 
from user_sequences 

但Postgres的,當我用這句話總是引發錯誤:找不到USER_SEQUENCES

我該如何在Postgres中做到這一點?

回答

2

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';
或嘗試運行PSQL作爲psql -U username -E其次\ds。這會向您顯示用於生成結果的查詢。

+0

我想這像甲骨文,通過SQL語句來選擇序列名。 – liu246437

+0

@ liu246437我編輯了答案。這個查詢應該適合您正在搜索的內容。 – DunnoHowToCode

+0

我嘗試了你的方法,我明白了,謝謝 – liu246437

4

您可以使用:

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_classpg_namespacepg_user當前用戶擁有只是「他自己的」,所以你還需要檢查序列創建的模式。

手冊中的更多細節: