Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Zwraca logiczne informacje o kluczu obcym dla bieżącego środowiska. Procedura ta pokazuje relacje kluczy obcych, w tym wyłączone klucze obce.
Transact-SQL konwencje składni
Składnia
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'
Nazwa tabeli wraz z kluczem głównym służy do zwracania informacji katalogowych.
@pktable_name to nazwa systemu, z domyślnym .NULL Nie jest obsługiwane dopasowanie wzorców z dziką kartą. Ten parametr lub parametr @fktable_name , albo oba te parametry, muszą być dostarczone.
[ @pktable_owner = ] N'pktable_owner'
Imię właściciela tabeli (z kluczem głównym) używane do zwracania informacji katalogowych.
@pktable_owner to nazwa systemu, z domyślnym .NULL Nie jest obsługiwane dopasowanie wzorców z dziką kartą. Jeśli @pktable_owner nie jest określona, stosuje się domyślne reguły widoczności tabel systemu zarządzania bazą danych (DBMS).
W SQL Server, jeśli aktualny użytkownik posiada tabelę o podanej nazwie, kolumny tej tabeli są zwracane. Jeśli @pktable_owner nie jest określona, a aktualny użytkownik nie posiada tabeli o określonych @pktable_name, procedura szuka tabeli o określonych @pktable_name należących do właściciela bazy danych. Jeśli taki istnieje, kolumny tej tabeli są zwracane.
[ @pktable_qualifier = ] N'pktable_qualifier'
Nazwa kwalifikatora tabeli (z kluczem głównym).
@pktable_qualifier to nazwa systemu, z domyślnym .NULL Różne produkty DBMS obsługują trójczęściowe nazewnictwo tabel (qualifier.owner.name). W SQL Server ten doprefikator oznacza nazwę bazy danych. W niektórych produktach reprezentuje nazwę serwera środowiska bazodanowego tabeli.
[ @fktable_name = ] N'fktable_name'
Nazwa tabeli (z kluczem obcym) służąca do zwracania informacji katalogowych.
@fktable_name to nazwa systemu, z domyślnym .NULL Nie jest obsługiwane dopasowanie wzorców z dziką kartą. Ten parametr lub parametr @pktable_name , albo oba te parametry, muszą być dostarczone.
[ @fktable_owner = ] N'fktable_owner'
Imię właściciela tabeli (z kluczem obcym) używane do zwracania informacji katalogowych.
@fktable_owner jest nazwą systemu z domyślnym .NULL Nie jest obsługiwane dopasowanie wzorców z dziką kartą. Jeśli @fktable_owner nie jest określona, domyślne reguły widoczności tabel bazowego DBMS mają zastosowanie.
W SQL Server, jeśli aktualny użytkownik posiada tabelę o podanej nazwie, kolumny tej tabeli są zwracane. Jeśli @fktable_owner nie jest określone, a obecny użytkownik nie posiada tabeli o określonych @fktable_name, procedura szuka tabeli z określonymi @fktable_name należącymi do właściciela bazy danych. Jeśli taki istnieje, kolumny tej tabeli są zwracane.
[ @fktable_qualifier = ] N'fktable_qualifier'
Nazwa kwalifikatora tabeli (z kluczem obcym).
@fktable_qualifier jest nazwą systemu z domyślnym .NULL W SQL Server ten doprefikator oznacza nazwę bazy danych. W niektórych produktach reprezentuje nazwę serwera środowiska bazodanowego tabeli.
Zwracanie wartości kodu
Żaden.
Zestaw wyników
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
PKTABLE_QUALIFIER |
sysname | Nazwa kwalifikatora tabeli (z kluczem głównym). To ciało może być .NULL |
PKTABLE_OWNER |
sysname | Nazwa właściciela tabeli (z kluczem głównym). To pole zawsze zwraca wartość. |
PKTABLE_NAME |
sysname | Nazwa tabeli (z kluczem głównym). To pole zawsze zwraca wartość. |
PKCOLUMN_NAME |
sysname | Nazwa głównych kolumn klucza, dla każdej kolumny zwróconej TABLE_NAME . To pole zawsze zwraca wartość. |
FKTABLE_QUALIFIER |
sysname | Nazwa kwalifikatora tabeli (z kluczem obcym). To ciało może być .NULL |
FKTABLE_OWNER |
sysname | Nazwa właściciela stołu (z kluczem obcym). To pole zawsze zwraca wartość. |
FKTABLE_NAME |
sysname | Nazwa stołu (z obcym). To pole zawsze zwraca wartość. |
FKCOLUMN_NAME |
sysname | Nazwa kolumny klucza obcego, dla każdej kolumny zwróconej TABLE_NAME . To pole zawsze zwraca wartość. |
KEY_SEQ |
smallint | Numer sekwencyjny kolumny w wielokolumnowym kluczu podstawowym. To pole zawsze zwraca wartość. |
UPDATE_RULE |
smallint | Działanie stosowane do klucza obcego, gdy operacja SQL jest aktualizowana. Możliwe wartości:0
=
CASCADE zmiany tonacji obcej.1
=
NO ACTION zmienia się, jeśli obecny jest klucz obcy.2 = SET_NULL3 = ustawij domyślne ustawienia |
DELETE_RULE |
smallint | Działanie stosowane do klucza obcego, gdy operacja SQL jest usuwaniem. Możliwe wartości:0
=
CASCADE zmiany tonacji obcej.1
=
NO ACTION zmienia się, jeśli obecny jest klucz obcy.2 = SET_NULL3 = ustaw domyślne |
FK_NAME |
sysname | Identyfikator klucza obcego. Jeśli nie dotyczy NULL źródła danych. SQL Server zwraca nazwę ograniczenia FOREIGN KEY . |
PK_NAME |
sysname | Identyfikator klucza głównego. Jeśli nie dotyczy NULL źródła danych. SQL Server zwraca nazwę ograniczenia PRIMARY KEY . |
Wyniki zwracane są uporządkowane według FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, oraz KEY_SEQ.
Uwagi
Kodowanie aplikacji zawierające tabele z wyłączonymi kluczami obcymi można zaimplementować następującymi metodami:
Tymczasowe wyłączenie sprawdzania ograniczeń (
ALTER TABLE NOCHECKlubCREATE TABLE NOT FOR REPLICATION) podczas pracy z tabelami, a następnie ponowne włączenie tego później.Używanie triggerów lub kodu aplikacji do egzekwowania relacji.
Jeśli podana jest nazwa podstawowej tabeli klucza, a nazwa tabeli klucza obcego to , NULLsp_fkeys zwraca wszystkie tabele, które zawierają klucz obcy do danej tabeli. Jeśli podana jest nazwa tabeli klucza obcego, a podstawowa nazwa tabeli klucza to , NULLsp_fkeys zwraca wszystkie tabele powiązane przez zależność klucza podstawowego/klucza obcego z kluczami obcymi w tabeli kluczy obcych.
Procedura sp_fkeys przechowywana jest równoważna SQLForeignKeys w ODBC.
Permissions
Wymaga SELECT zgody na schemat.
Przykłady
Poniższy przykład pobiera listę kluczy obcych dla tabeli HumanResources.Department w bazie AdventureWorks2025 danych.
USE AdventureWorks2022;
GO
EXECUTE sp_fkeys
@pktable_name = N'Department',
@pktable_owner = N'HumanResources';
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
Poniższy przykład pobiera listę kluczy obcych dla tabeli DimDate w bazie AdventureWorksPDW2012 danych. Nie zwraca się żadnych wierszy, ponieważ Azure Synapse Analytics nie obsługuje kluczy obcych.
EXECUTE sp_fkeys @pktable_name = N'DimDate';