Gå til innhold

Hjelp med en PostGreSQL spørring


Anbefalte innlegg

Heisann databasefolk :)

Jeg sitter med en spørring her som jeg ikke får til.

Jeg har behov for en spørring i postgres (8.2.4 om noen lurer) som gir meg hvilke kolonner som er primærnøkkel i en tabell på følgende formen:

 

TABLE_NAME				COLUMN_NAME
------------------------- --------------------
ALTERNATIVEFILMTITLE	  ALTTITLE
ALTERNATIVEFILMTITLE	  FILMID
FILM					  FILMID
FILMCOUNTRY			   COUNTRY
FILMCOUNTRY			   FILMID

 

Jeg er ikke helt fortrolig med hvordan postgres bruker sine system tabeller og håper derfor at det er noen der ute som kan hjelpe meg litt.

Lenke til kommentar
Videoannonse
Annonse

select r.relname as "Table", c.conname as "Constraint Name",

contype as "Constraint Type", conkey as "Key Columns",

confkey as "Foreign Columns", consrc as "Source", a.attname as "PrimaryKey"

from pg_class r

inner join pg_constraint c ON r.oid = c.conrelid

inner join pg_attribute a ON r.relfilenode = attrelid

where a.atttypid = 23

 

ser ut til å fungere

 

Kilde (delvis): http://www.thescripts.com/forum/thread174998.html

Endret av blackbrrd
Lenke til kommentar

Tusen takk for hjelpen :)

Er en stund siden jeg var innom og sjekket svaret og fikk testa det. Akkurat den nevnte spørringen fungerte ikke for meg. Grunnen til det tror jeg er at i databasen jeg jobber på er det ikke definert noen primærnøkkler (i ordets rette forstand). Postgres har jo også varianten UNIQUE i tillegg til PK, og det er UNIQUE som er brukt i denne basen.

 

Spørringen jeg endte opp med er:

select  r.relname as table_name,  a.attname as column_name 
from pg_class r
inner join pg_constraint c ON r.oid = c.conrelid
inner join pg_attribute a ON r.relfilenode = a.attrelid
where a.attnum > 0  
and c.contype = 'u' /* Sjekker på typen UNIQUE */
and a.attnum = ANY(conkey)
order by r.relname;

 

 

 

Men takk for hjelpen. Har lært veldig mye om systemtabellene til postgres i det siste.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...