Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz 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_NULL3 = 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_NULL3 = 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 NOCHECKveyaCREATE 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';