2017-08-22 2 views
4

Ich kam mit der folgenden Abfrage, die mir die Spaltennamen zusammen mit seinen Datentypen bietet, aber mir den Referenztyp nicht zur Verfügung stellt (d. H., Ob die Spalte ein Primärschlüssel oder ein Fremdschlüssel ist).Wie kann ich den Spaltennamen zusammen mit seinem Referenztyp (z. B. PRIMARY KEY & FOREIGN KEY) in einer einzigen POSTGRESQL-Abfrage abrufen?

select column_name, data_type,character_maximum_length,is_nullable 
from information_schema.columns 
where table_name ='employee'; 

Dies ist die Ausgabe, die ich bekommen habe:

column_name |  data_type  | character_maximum_length | is_nullable 
-------------+-------------------+--------------------------+------------- 
empno  | character varying |      10 | NO 
full_name | character varying |      30 | YES 
city  | character varying |      9 | YES 
gender  | character   |      7 | YES 

jemand mir helfen kann, die reference_type bekommen (das heißt PRIMARY_KEY & FOREIGN_KEY) als auch für die Abfrage?

+0

Bitte [nicht Crossposting] (http://meta.stackexchange.com/q/64068/157328) Auch gefragt auf dba.stackexchange: https://dba.stackexchange.com/q/184065/1822 –

+0

@a_horse_with_no_name: niemand antwortete auf Datenbank-Administrator daher war gezwungen, es hier im Haupt zu posten. –

+0

@sagi: Ich glaube wirklich nicht, dass meine Frage ein Duplikat von dem ist, von dem du den Link gepostet hast. Was ich suche, ist die Tabellenspalte mit ihrem Referenztyp. Hatte bereits https://wiki.postgresql.org/wiki/Retrieve_primary_key_columns besucht, aber das erfüllte wirklich meinen Zweck nicht und daher wurde die Frage entsprechend der gestellt, die meine Bedürfnisse erfüllte. –

Antwort

2

Sie können dies versuchen:

select c.column_name, c.data_type, c.character_maximum_length, c.is_nullable, s.constraint_name, t.constraint_type 
    from information_schema.columns c 
    left join information_schema.key_column_usage s on s.table_name = c.table_name and s.column_name = c.column_name 
    left join information_schema.table_constraints t on t.table_name = c.table_name and t.constraint_name = s.constraint_name 
    where c.table_name ='employee' 

Haben Sie einen Blick auf diesen Link https://www.postgresql.org/docs/9.1/static/information-schema.html

+0

@a_horse_with_no_name & N.Dov: Bullseye ... Das ist genau das was ich gesucht habe. Danke eine Tonne Mann :) :) :) –

Verwandte Themen