Jak uzyskać kolumnę klucza podstawowego w Oracle?

Muszę uzyskać nazwę kolumny klucza głównego.

W wejściu mam tylko nazwę tabeli.

 78
Author: James Brown, 0000-00-00

2 answers

SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'TABLE_NAME'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;

Upewnij się, że nazwa tabeli jest pisana wielkimi literami, ponieważ Oracle przechowuje nazwy tabel wielkimi literami.

 144
Author: Richie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-23 09:11:13

Tak samo jak odpowiedź od 'Richie', ale trochę bardziej zwięzła.

  1. Zapytanie tylko dla ograniczeń użytkownika

    SELECT column_name FROM all_cons_columns WHERE constraint_name = (
      SELECT constraint_name FROM user_constraints 
      WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
    );
    
  2. Zapytanie o wszystkie ograniczenia

    SELECT column_name FROM all_cons_columns WHERE constraint_name = (
      SELECT constraint_name FROM all_constraints 
      WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
    );
    
 14
Author: Mat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 13:27:23