it-swarm.com.de

SQL-Abfrage zum Finden des Primärschlüssels einer Tabelle?

Wie kann ich anhand einer Abfrage herausfinden, welche Spalte der Primärschlüssel einer Tabelle ist?

17
sky scraper

Für Oracle können Sie es in der Tabelle ALL_CONSTRAINTS nachschlagen:

SELECT a.COLUMN_NAME
FROM all_cons_columns a INNER JOIN all_constraints c 
     ON a.constraint_name = c.constraint_name 
WHERE c.table_name = 'TBL'
  AND c.constraint_type = 'P';

DEMO.

Für SQL Server wurde bereits hier beantwortet und für MySQL @jons Antwort .

12
João Silva

Dies ist ein Duplikat Frage :

dank an Lukmdo für diese Antwort:

Es kann nicht empfohlen werden, funktioniert aber gut:

show index from TABLE where Key_name = 'PRIMARY' ;

Der solide Weg ist, information_schema zu verwenden:

SELECT k.COLUMN_NAME
FROM information_schema.table_constraints t
LEFT JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
    AND t.table_schema=DATABASE()
    AND t.table_name='owalog';
20
ajon

Für MySQL:

SELECT GROUP_CONCAT(COLUMN_NAME), TABLE_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  TABLE_SCHEMA = '**database name**'
  AND CONSTRAINT_NAME='PRIMARY'
GROUP BY TABLE_NAME;

Warnung Bei einem Primärschlüssel mit zwei Spalten werden diese durch ein Koma (,) getrennt.

9
Romuald Brunet

Versuchen Sie diese Abfrage in SQL Server:

SELECT     X.NAME AS INDEXNAME,
           COL_NAME(IC.OBJECT_ID,IC.COLUMN_ID) AS COLUMNNAME
FROM       SYS.INDEXES  X 
INNER JOIN SYS.INDEX_COLUMNS  IC 
        ON X.OBJECT_ID = IC.OBJECT_ID
       AND X.INDEX_ID = IC.INDEX_ID
WHERE      X.IS_PRIMARY_KEY = 1
  AND      OBJECT_NAME(IC.OBJECT_ID)='YOUR_TABLE'
5
user1577417

Die folgende Abfrage enthält eine Liste aller Primärschlüssel in der angegebenen Datenbank.

SELECT DISTINCT TABLE_NAME ,column_name
    FROM INFORMATION_SCHEMA.key_column_usage
    WHERE TABLE_SCHEMA IN ('*your_db_name*');
3
BhandariS

In mySQL 

SHOW COLUMNS FROM `table_name`;

Hier werden die Details der Spalten angezeigt, z. B. Feld, Datentyp, Schlüssel usw.

0
Brian Wangombe