Udostępnij za pomocą


sp_fkeys (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Magazyn w usłudze Microsoft FabricBaza 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_NULL
3 = 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_NULL
3 = 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 NOCHECK lub CREATE 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';