2009-09-02 1 views
1

Я снова работаю над программным обеспечением промежуточного программного обеспечения базы данных. Я хочу получить имена всех ключевых значений данной таблицы.Извлечение ключевых атрибутов для данной таблицы

Например:

CREATE TABLE Foo (A INTEGER PRIMARY KEY, B VARCHAR (255))

Я хочу спросить Oracle для первичных ключей 'Foo', и я хочу, чтобы получить «A ».

Возможно ли это в Oracle? Я попытался найти их документацию, но не смог найти ничего ценного.

Заранее спасибо

Kage

ответ

1

Source:

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; 

Убедитесь ввести table_name в верхнем регистре, а Oracle магазинах все таблицы имена в верхнем регистре. Давайте быстро объясним вывод этого запроса. table_name - это имя таблицы (хранится в верхнем регистре). column_name - имя столбца, которое является частью первичного ключа. (также хранится в в верхнем регистре) позиция - это позиция в первичный ключ. Первичный ключ может содержать более одного столбца, поэтому понимание порядка столбцов в первичном ключе очень важно. status указывает, включен ли в настоящее время основной ключ . владелец указывает схему, которая принадлежит таблице.

ALL_CONSTRAINTS - здесь очень хорошее описание ALL_CONSTRAINTS

ALL_CONS_COLUMNS - здесь очень хорошее описание ALL_CONS_COLUMNS

+0

Вау, спасибо. Думаю, это поможет. Спасибо Светлозару :-). Какими были бы подходящие условия поиска для этой страницы документации Oracle? Ограничения? – Kage

+0

Основной ключ - ограничение, поэтому да - это хороший выбор. –

+0

Еще раз спасибо :-). – Kage

 Смежные вопросы

  • Нет связанных вопросов^_^