sp_pkeys (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure хранилище платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric
Возвращает сведения о первичном ключе заданной таблицы в текущей среде.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис для SQL Server, База данных SQL Azure, Azure Synapse Analytics, система платформы аналитики (PDW).
sp_pkeys
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ ; ]
Аргументы
[ @table_name = ] N'table_name'
Указывает таблицу, для которой возвращаются сведения. @table_name — sysname без значения по умолчанию. Сопоставление шаблонов подстановочных знаков не поддерживается.
[ @table_owner = ] N'table_owner'
Задает владельца указанной таблицы. @table_owner — sysname с значением по умолчаниюNULL
. Сопоставление шаблонов подстановочных знаков не поддерживается. Если @table_owner не задано, применяются правила видимости таблиц по умолчанию базовой системы управления базами данных (СУБД).
В SQL Server, если текущий пользователь владеет таблицей с указанным именем, возвращаются столбцы этой таблицы. Если @table_owner не указан, а текущий пользователь не владеет таблицей с указанным @table_name, эта процедура ищет таблицу с указанным @table_name владельцем базы данных. Если такая таблица существует, возвращаются ее столбцы.
[ @table_qualifier = ] N'table_qualifier'
Квалификатор таблицы. @table_qualifier имеет имя sysname с значением по умолчаниюNULL
. Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (<qualifier>.<owner>.<name>
). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, в которой находится таблица.
Значения кода возврата
Нет.
Результирующий набор
Имя столбца | Тип данных | Description |
---|---|---|
TABLE_QUALIFIER |
sysname | Имя квалификатора таблицы. Это поле может быть NULL . |
TABLE_OWNER |
sysname | Имя владельца таблицы. Это поле всегда возвращает значение. |
TABLE_NAME |
sysname | Имя таблицы. В SQL Server этот столбец представляет имя таблицы, как указано в таблице sysobjects. Это поле всегда возвращает значение. |
COLUMN_NAME |
sysname | Имя столбца для каждого столбца возвращаемого TABLE_NAME столбца. В SQL Server этот столбец представляет имя столбца, как указано в sys.columns таблице. Это поле всегда возвращает значение. |
KEY_SEQ |
smallint | Порядковый номер столбца в первичном ключе, состоящем из нескольких столбцов. |
PK_NAME |
sysname | Идентификатор первичного ключа. Возвращается NULL , если не применимо к источнику данных. |
Замечания
sp_pkeys
возвращает сведения о столбцах, явно определенных с ограничением PRIMARY KEY
. Так как не все системы поддерживают явно именованные первичные ключи, средство реализации шлюза определяет, что представляет собой первичный ключ. Термин первичный ключ относится к логическому первичному ключу таблицы. Каждый ключ, указанный в качестве логического первичного ключа, должен иметь уникальный индекс, определенный в нем. Этот уникальный индекс также возвращается в sp_statistics
.
Хранимая sp_pkeys
процедура эквивалентна SQLPrimaryKeys
ODBC. Результаты упорядочены по TABLE_QUALIFIER
, TABLE_OWNER
и TABLE_NAME
KEY_SEQ
.
Разрешения
Требуется SELECT
разрешение на схему.
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.
В следующем примере возвращается первичный ключ таблицы HumanResources.Department
в базе данных AdventureWorks2022
.
USE AdventureWorks2022;
GO
EXEC sp_pkeys @table_name = N'Department',
@table_owner = N'HumanResources';
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В следующем примере возвращается первичный ключ таблицы DimAccount
в базе данных AdventureWorksPDW2012
. Он возвращает нулевые строки, указывающие, что в таблице нет первичного ключа.
-- Uses AdventureWorksPDW
EXEC sp_pkeys @table_name = N'DimAccount';