Подскажите пожалуйста, как получить имя первичного ключа в SQL Server 2005 - PullRequest
0 голосов
/ 07 января 2010

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

Ответы [ 4 ]

2 голосов
/ 07 января 2010
declare @tableName as nvarchar(100)
set @tableName = 'table'

select i.name, c.name 
from sys.index_columns ic 
    join sys.indexes i on ic.index_id=i.index_id
    join sys.columns c on c.column_id=ic.column_id
where 
    i.[object_id] = object_id(@tableName) and 
    ic.[object_id] = object_id(@tableName) and 
    c.[object_id] = object_id(@tableName) and
    is_primary_key = 1
1 голос
/ 07 января 2010

Вот еще один вариант, который использует представления INFORMATION_SCHEMA

SELECT 
    cu.Table_Catalog,
    cu.Table_Schema,
    cu.table_name,
    cu.Constraint_name  ,
    cu.column_name

FROM 
    sys.indexes si
    inner join  INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu
    on si.name = cu.constraint_name
WHERE 
    is_primary_key = 1
0 голосов
/ 08 июля 2010

Просто примечание о производительности - выбор с использованием таблиц sys на пару порядков быстрее, чем выбор, использующий представления INFORMATION_SCHEMA

0 голосов
/ 07 января 2010

Не совсем то, что вы ищете, но вы можете поиграть с ним:

SQL 2000: T-SQL для получения отношений внешнего ключа для таблицы

...