Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
Lager i Microsoft Fabric
SQL-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_NULL3 = 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_NULL3 = 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 NOCHECKellerCREATE 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';