Aracılığıyla paylaş


sp_fkeys (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'te ambarMicrosoft Fabric'te SQL veritabanı

Mevcut ortam için mantıklı yabancı anahtar bilgisini döndürür. Bu prosedür, devre dışı bırakılmış yabancı anahtarlar dahil olmak üzere yabancı anahtar ilişkilerini gösterir.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_fkeys
    [ [ @pktable_name = ] N'pktable_name' ]
    [ , [ @pktable_owner = ] N'pktable_owner' ]
    [ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
    [ , [ @fktable_name = ] N'fktable_name' ]
    [ , [ @fktable_owner = ] N'fktable_owner' ]
    [ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]

Arguments

[ @pktable_name = ] N'pktable_name'

Tablonun adı, ana anahtarla birlikte, katalog bilgisini döndürmek için kullanılırdı. @pktable_namesysname'dir ve varsayılan olarak NULL. Wildcard desen eşleştirme desteklenmiyor. Bu parametre veya @fktable_name parametresi, ya da her ikisi de sağlanmalıdır.

[ @pktable_owner = ] N'pktable_owner'

Tablo sahibinin adı (birincil anahtarla) katalog bilgilerini döndürmek için kullanılırdı. @pktable_ownersysname'dir ve varsayılan olarak NULL. Wildcard desen eşleştirme desteklenmiyor. Eğer @pktable_owner belirtilmemişse, temel veritabanı yönetim sisteminin (DBMS) varsayılan tablo görünürlüğü kuralları uygulanır.

SQL Server'da, mevcut kullanıcı belirtilen isimle bir tabloya sahipse, o tablonun sütunları döner. Eğer @pktable_owner belirtilmemişse ve mevcut kullanıcı belirtilen @pktable_name içeren bir tabloya sahip değilse, prosedür veritabanı sahibine ait @pktable_name belirtilen bir tablo arar. Eğer bir tane varsa, o tablonun sütunları geri döner.

[ @pktable_qualifier = ] N'pktable_qualifier'

Tablonun adı (birincil anahtarla) elemecisi. @pktable_qualifiersysname'dir, varsayılan olarak .NULL Çeşitli DBMS ürünleri, tablolar için üç bölümlü adlandırmayı destekler (qualifier.owner.name). SQL Server'da niteleyici, veritabanı adını temsil eder. Bazı ürünlerde, tablonun veritabanı ortamının sunucu adını temsil eder.

[ @fktable_name = ] N'fktable_name'

Tablonun adı (yabancı anahtarla) katalog bilgilerini döndürmek için kullanılırdı. @fktable_namesysname'dir, varsayılan olarak .NULL Wildcard desen eşleştirme desteklenmiyor. Bu parametre veya @pktable_name parametre, ya da her ikisi de sağlanmalıdır.

[ @fktable_owner = ] N'fktable_owner'

Tablo sahibinin adı (yabancı anahtarla) katalog bilgilerini döndürmek için kullanılırdı. @fktable_ownersysname'dir ve varsayılan olarak .NULL Wildcard desen eşleştirme desteklenmiyor. Eğer @fktable_owner belirtilmemişse, temel DBMS'nin varsayılan tablo görünürlüğü kuralları geçerlidir.

SQL Server'da, mevcut kullanıcı belirtilen isimle bir tabloya sahipse, o tablonun sütunları döner. Eğer @fktable_owner belirtilmemişse ve mevcut kullanıcı belirtilen @fktable_name içeren bir tabloya sahip değilse, prosedür veritabanı sahibine ait @fktable_name belirtilen bir tablo arar. Eğer bir tane varsa, o tablonun sütunları geri döner.

[ @fktable_qualifier = ] N'fktable_qualifier'

Tablonun adı (yabancı anahtarla) elemecisi. @fktable_qualifiersysname'dir ve varsayılan olarak .NULL SQL Server'da niteleyici, veritabanı adını temsil eder. Bazı ürünlerde, tablonun veritabanı ortamının sunucu adını temsil eder.

Dönüş kodu değerleri

Yok.

Sonuç kümesi

Sütun adı Veri türü Description
PKTABLE_QUALIFIER sysname Tablonun adı (birincil anahtarla) niteleyici. Bu alan olabilir NULL.
PKTABLE_OWNER sysname Tablo sahibinin adı (birincil anahtarla) için. Bu alan her zaman bir değer döndürür.
PKTABLE_NAME sysname Tablonun adı (birincil anahtarla). Bu alan her zaman bir değer döndürür.
PKCOLUMN_NAME sysname Geri dönen her sütun TABLE_NAME için birincil anahtar sütunlarının adı. Bu alan her zaman bir değer döndürür.
FKTABLE_QUALIFIER sysname Tablonun adı (yabancı anahtarla) elemecisi. Bu alan olabilir NULL.
FKTABLE_OWNER sysname Tablo sahibinin adı (yabancı anahtarla). Bu alan her zaman bir değer döndürür.
FKTABLE_NAME sysname Tablonun adı (yabancı anahtarla). Bu alan her zaman bir değer döndürür.
FKCOLUMN_NAME sysname Yabancı anahtar sütununun adı, her dönen sütun TABLE_NAME için. Bu alan her zaman bir değer döndürür.
KEY_SEQ smallint Çok sütunlu birincil anahtardaki sütunun dizi numarası. Bu alan her zaman bir değer döndürür.
UPDATE_RULE smallint SQL işlemi güncelleme olduğunda yabancı anahtara uygulanan eylem. Olası değerler:
0 = CASCADE yabancı anahtara değişiklikler.
1 = NO ACTION yabancı anahtar varsa değişir.
2 = SET_NULL
3 = varsayılan set
DELETE_RULE smallint SQL işlemi silme olduğunda yabancı anahtara uygulanan eylem. Olası değerler:
0 = CASCADE yabancı anahtara değişiklikler.
1 = NO ACTION yabancı anahtar varsa değişir.
2 = SET_NULL
3 = varsayılan set
FK_NAME sysname Yabancı anahtar tanımlayıcısı. NULL Veri kaynağı için geçerli değilse de. SQL Server kısıtlama adını döndürür FOREIGN KEY .
PK_NAME sysname Birincil anahtar tanımlayıcısı. NULL Veri kaynağı için geçerli değilse de. SQL Server kısıtlama adını döndürür PRIMARY KEY .

Sonuçlar , FKTABLE_QUALIFIER, FKTABLE_OWNER, ve FKTABLE_NAMEile KEY_SEQsıralanır.

Açıklamalar

Devre dışı anahtarlara sahip tabloları içeren uygulama kodlaması aşağıdaki yöntemlerle uygulanabilir:

  • Tablolarla çalışırken kısıtlama kontrolü (ALTER TABLE NOCHECK veya CREATE TABLE NOT FOR REPLICATION) geçici olarak devre dışı bırakıp, sonra tekrar etkinleştiriyorum.

  • İlişkileri zorlamak için tetikleyiciler veya uygulama kodları kullanmak.

Birincil anahtar tablo adı sağlanıyorsa ve yabancı anahtar tablo adı NULLise, sp_fkeys verilen tabloya yabancı anahtar içeren tüm tabloları döndürür. Yabancı anahtar tablosu adı sağlanıyorsa ve birincil anahtar tablosu adı NULLise, sp_fkeys yabancı anahtar tablosundaki yabancı anahtarlarla birincil anahtar/yabancı anahtar ilişkisi ile ilişkili tüm tabloları döndürür.

Depolanan prosedür, sp_fkeys ODBC'deki SQLForeignKeys ile eşdeğerdir.

Permissions

Şema için izin gerekiyor SELECT .

Örnekler

Aşağıdaki örnek, veritabanındaki tablo HumanResources.Department için AdventureWorks2025 yabancı anahtarların bir listesini alır.

USE AdventureWorks2022;
GO

EXECUTE sp_fkeys
    @pktable_name = N'Department',
    @pktable_owner = N'HumanResources';

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

Aşağıdaki örnek, veritabanındaki tablo DimDate için AdventureWorksPDW2012 yabancı anahtarların bir listesini alır. Azure Synapse Analytics yabancı anahtarları desteklemediği için satır döndürülmez.

EXECUTE sp_fkeys @pktable_name = N'DimDate';