2013-06-18 20 views
29

'dan alın PostgreSql'de DB "sınaması" var. Ben Sen pg_database kombinasyonunu kullanabilirsinizDB sahibinin adını PostgreSql

SELECT d.datname as "Name", 
pg_catalog.pg_get_userbyid(d.datdba) as "Owner" 
FROM pg_catalog.pg_database d 
WHERE d.datname = 'your_name' 
ORDER BY 1; 

cevap

36

yardımcı found.Please benim database.I Google arandı sahibi olsun sql yazma ancak cevap vermek istiyorum , pg_users sistem tabloları ve bu yolla current_database() işlevi: psql komut satırı aracını kullanırsanız

SELECT u.usename 
FROM pg_database d 
    JOIN pg_user u ON (d.datdba = u.usesysid) 
WHERE d.datname = (SELECT current_database()); 
27

sistem kataloğunda böyle şeyler bulabilirsiniz bana

+0

Bu işe yaramaz. –

18

, sadecekullanabilirsiniz grup rolü ait veritabanı ile

+0

Bu, veritabanlarının bir listesini döndürür, ancak veritabanlarının sahiplerini döndürür. – Flimm

+0

@Flimm Yorumunuzu anlamadım - bu, sunucudaki tüm mevcut DB'lerin listesini (geçerli kullanıcının görüntüleme iznine sahip olduğunu) her bir DB'nin sahibi ile döndürür. –

+0

Haklısınız. Bazı nedenlerden dolayı farklı bir sonuç veren pgcli kullanıyordum. – Flimm

0

Bu çalışma: veritabanı rolü (kullanıcı grubu) ve bir kullanıcı aitse

SELECT 
    U.rolname 
    ,D.datname 
FROM 
    pg_authid AS U JOIN pg_database AS D ON (D.datdba = U.oid) 
WHERE 
    D.datname = current_database()