2017-06-16 7 views
0

私はDjango-Frameworkを使用しています。 各モデルについて、djangoは一意のidとsquenceでリレーションを生成します。postgresqlのすべてのシーケンスのすべてのIDを選択するには?

例えば:

関係: myapp__mymodel_a myapp__mymodel_b myapp__mymodel_c

系列: myapp__mymodel_a__id_seq myapp__mymodel_b__id_seq myapp__mymodel_c__id_seq

各関係は一意のフィールド "ID" を持ちます。 すべてのid-fieldには、特に "last_value"というフィールドがあります。

すべてのシーケンスのlast_valuesを取得するには、 "_id_seq"で終わるSQLコマンドが必要です。

+0

に対して参加前のバージョンの9.5が付属していますか?あなたはテーブルからlast_valueを得ることができます – Exprator

答えて

0
t=# do 
$$ 
declare 
_r record; 
_t text; 
begin 
for _r in (select relname,relnamespace::regnamespace from pg_class where relname like '%_id_seq') loop 
    execute format('select last_value from %I.%I',_r.relnamespace,_r.relname) into _t; 
    raise info '%', 'seq: '||_r.relname||', last_value: '||_t; 
end loop; 
end; 
$$ 
; 
INFO: seq: test_table_id_seq, last_value: 3 
INFO: seq: json_test_id_seq, last_value: 4 
INFO: seq: test_a_id_seq, last_value: 1 
INFO: seq: customer_id_seq, last_value: 4 
INFO: seq: customerstatus_recordid_seq, last_value: 8 
INFO: seq: customerstatus_id_seq, last_value: 1 
INFO: seq: t1_id_seq, last_value: 16 
INFO: seq: s100_serial_id_seq, last_value: 8 
INFO: seq: t2_id_seq, last_value: 4 
DO 

も10来ると、there will be pg_sequence

regnamespaceあなたがシーケンスからLAST_VALUEが必要なのか、なぜpg_namespace.oid

+0

Thx Vao Tsun! 簡単な変更を加えれば、このコードは私にとっては役に立ちます。 'code'ERROR:42704:タイプ "regnamespaceは" は' code'LINE 1が存在しません:私が得たバージョンと (WHのpg_classからrelname、relnamespace :: regnamespaceを選択... 'code'^ 私のために私はregnamespaceを削除し、すべて正常に動作します! – Morpheus

+0

はい - それを反映するように答えを更新しました。ありがとう –

関連する問題