sp_fkeys (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)Lager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar logisk främmande nyckelinformation för den aktuella miljön. Denna procedur visar främmande nyckelrelationer, inklusive funktionsnedsatta främmande nycklar.

Transact-SQL syntaxkonventioner

Syntax

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'

Namnet på tabellen, med primärnyckeln, används för att returnera kataloginformation. @pktable_name är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Denna parameter eller @fktable_name parameter, eller båda, måste tillhandahållas.

[ @pktable_owner = ] N'pktable_owner'

Namnet på ägaren av tabellen (med primärnyckeln) som används för att returnera kataloginformation. @pktable_owner är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Om @pktable_owner inte specificeras gäller standardreglerna för tabellsynlighet för det underliggande databashanteringssystemet (DBMS).

I SQL Server, om den nuvarande användaren äger en tabell med det angivna namnet, returneras tabellens kolumner. Om @pktable_owner inte är specificerat och den nuvarande användaren inte äger en tabell med den angivna @pktable_name, letar proceduren efter en tabell med den angivna @pktable_name som ägs av databasägaren. Om en sådan finns, returneras tabellens kolumner.

[ @pktable_qualifier = ] N'pktable_qualifier'

Namnet på tabellen (med primärnyckeln) kvalificeraren. @pktable_qualifier är sysname, med standardvärdet .NULL Olika DBMS-produkter stödjer tredelad namngivning för tabeller (qualifier.owner.name). I SQL Server representerar kvalificeraren databasens namn. I vissa produkter representerar den servernamnet på tabellens databasmiljö.

[ @fktable_name = ] N'fktable_name'

Namnet på tabellen (med främmande nyckel) som används för att returnera kataloginformation. @fktable_name är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Denna parameter eller @pktable_name-parametern , eller båda, måste tillhandahållas.

[ @fktable_owner = ] N'fktable_owner'

Namnet på bordets ägare (med främmande nyckel) som används för att returnera kataloginformation. @fktable_owner är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Om @fktable_owner inte specificeras gäller standardreglerna för tabellsynlighet för den underliggande databasen.

I SQL Server, om den nuvarande användaren äger en tabell med det angivna namnet, returneras tabellens kolumner. Om @fktable_owner inte är specificerat och den nuvarande användaren inte äger en tabell med den angivna @fktable_name, letar proceduren efter en tabell med den angivna @fktable_name som ägs av databasägaren. Om en sådan finns, returneras tabellens kolumner.

[ @fktable_qualifier = ] N'fktable_qualifier'

Namnet på tabellen (med främmande nyckel) är en tilläggsfaktor. @fktable_qualifier är sysname, med standardvärdet .NULL I SQL Server representerar kvalificeraren databasens namn. I vissa produkter representerar den servernamnet på tabellens databasmiljö.

Returnera kodvärden

Ingen.

Resultatuppsättning

Kolumnnamn Datatyp Description
PKTABLE_QUALIFIER sysname Namnet på tabellen (med primärnyckeln) kvalificeraren. Detta fält kan vara NULL.
PKTABLE_OWNER sysname Namn på tabellen (med primärnyckeln) ägare. Detta fält returnerar alltid ett värde.
PKTABLE_NAME sysname Namnet på tabellen (med primärnyckeln). Detta fält returnerar alltid ett värde.
PKCOLUMN_NAME sysname Namnet på primärnyckelkolumnerna, för varje kolumn i den TABLE_NAME returnerade. Detta fält returnerar alltid ett värde.
FKTABLE_QUALIFIER sysname Namnet på tabellen (med främmande nyckel) kvalifikator. Detta fält kan vara NULL.
FKTABLE_OWNER sysname Namn på bordets (med främmande nyckel) ägare. Detta fält returnerar alltid ett värde.
FKTABLE_NAME sysname Namnet på tabellen (med främmande nyckel). Detta fält returnerar alltid ett värde.
FKCOLUMN_NAME sysname Namnet på kolumnen för främmande nyckeln, för varje kolumn i den TABLE_NAME returnerade. Detta fält returnerar alltid ett värde.
KEY_SEQ smallint Sekvensnummer för kolumnen i en primärnyckel med flera kolumner. Detta fält returnerar alltid ett värde.
UPDATE_RULE smallint Åtgärden som tillämpas på främmande nyckeln när SQL-operationen är en uppdatering. Möjliga värden:
0 = CASCADE Byter till främmande nyckel.
1 = NO ACTION ändras om främmande nyckel finns.
2 = SET_NULL
3 = ställ standard
DELETE_RULE smallint Åtgärden som tillämpas på främmande nyckeln när SQL-operationen är en borttagning. Möjliga värden:
0 = CASCADE Byter till främmande nyckel.
1 = NO ACTION ändras om främmande nyckel finns.
2 = SET_NULL
3 = ställ standard
FK_NAME sysname Främmande nyckelidentifierare. Det är NULL det om det inte gäller datakällan. SQL Server returnerar begränsningsnamnet FOREIGN KEY .
PK_NAME sysname Primärnyckelidentifierare. Det är NULL det om det inte gäller datakällan. SQL Server returnerar begränsningsnamnet PRIMARY KEY .

De returnerade resultaten är ordnade efter FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, och KEY_SEQ.

Anmärkningar

Applikationskodning som inkluderar tabeller med inaktiverade främmande nycklar kan implementeras med följande metoder:

  • Tillfälligt inaktivera begränsningskontroll (ALTER TABLE NOCHECK eller CREATE TABLE NOT FOR REPLICATION) medan man arbetar med tabellerna, och sedan aktivera det igen senare.

  • Att använda triggers eller applikationskod för att upprätthålla relationer.

Om primärnyckeltabellens namn anges och främmande nyckeltabellens namn är NULL, sp_fkeys returnerar alla tabeller som inkluderar en främmande nyckel till den givna tabellen. Om namnet på främmande nyckeltabellen anges och primärnyckelns tabellnamn är NULL, sp_fkeys returnerar alla tabeller som är relaterade genom en primärnyckel/främmande nyckel-relation till främmande nycklar i främmande nyckeltabellen.

Den lagrade sp_fkeys proceduren motsvarar SQLForeignKeys i ODBC.

Permissions

Kräver SELECT tillstånd på schemat.

Examples

Följande exempel hämtar en lista med främmande nycklar för HumanResources.Department tabellen i databasen AdventureWorks2025 .

USE AdventureWorks2022;
GO

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

Följande exempel hämtar en lista med främmande nycklar för DimDate tabellen i databasen AdventureWorksPDW2012 . Inga rader returneras eftersom Azure Synapse Analytics inte stöder främmande nycklar.

EXECUTE sp_fkeys @pktable_name = N'DimDate';