Delen via


sp_fkeys (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Magazijn in Microsoft FabricSQL-database in Microsoft Fabric

Geeft logische vreemde sleutelinformatie terug voor de huidige omgeving. Deze procedure toont vreemde sleutelrelaties, inclusief uitgeschakelde vreemde sleutels.

Transact-SQL syntaxis-conventies

Syntaxis

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'

De naam van de tabel, met de primaire sleutel, werd gebruikt om catalogusinformatie terug te geven. @pktable_name is een systeemnaam, met als standaard .NULL Wildcard-patroonmatching wordt niet ondersteund. Deze parameter of de @fktable_name parameter, of beide, moet worden aangeleverd.

[ @pktable_owner = ] N'pktable_owner'

De naam van de eigenaar van de tabel (met de primaire sleutel) die wordt gebruikt om catalogusinformatie terug te geven. @pktable_owner is een systeemnaam, met als standaard .NULL Wildcard-patroonmatching wordt niet ondersteund. Als @pktable_owner niet is gespecificeerd, gelden de standaard tabelzichtbaarheidsregels van het onderliggende databasebeheersysteem (DBMS).

In SQL Server, als de huidige gebruiker een tabel bezit met de opgegeven naam, worden de kolommen van die tabel teruggegeven. Als @pktable_owner niet is gespecificeerd en de huidige gebruiker geen tabel bezit met de opgegeven @pktable_name, zoekt de procedure naar een tabel met de gespecificeerde @pktable_name die eigendom is van de database-eigenaar. Als er een bestaat, worden de kolommen van die tabel teruggegeven.

[ @pktable_qualifier = ] N'pktable_qualifier'

De naam van de tabel (met de primaire sleutel) kwalificatie. @pktable_qualifier is sysname, met als standaard .NULL Verschillende DBMS-producten ondersteunen driedelige naamgeving voor tabellen (qualifier.owner.name). In SQL Server vertegenwoordigt de kwalificaat de databasenaam. In sommige producten vertegenwoordigt het de servernaam van de databaseomgeving van de tabel.

[ @fktable_name = ] N'fktable_name'

De naam van de tabel (met een vreemde sleutel) die wordt gebruikt om catalogusinformatie terug te geven. @fktable_name is sysname, met als standaard .NULL Wildcard-patroonmatching wordt niet ondersteund. Deze parameter of de @pktable_name parameter, of beide, moet worden aangeleverd.

[ @fktable_owner = ] N'fktable_owner'

De naam van de eigenaar van de tabel (met een vreemde sleutel) die wordt gebruikt om catalogusinformatie terug te geven. @fktable_owner is een systeemnaam, met als standaard NULL. Wildcard-patroonmatching wordt niet ondersteund. Als @fktable_owner niet is gespecificeerd, gelden de standaard tabelzichtbaarheidsregels van de onderliggende DBMS.

In SQL Server, als de huidige gebruiker een tabel bezit met de opgegeven naam, worden de kolommen van die tabel teruggegeven. Als @fktable_owner niet is gespecificeerd en de huidige gebruiker geen tabel bezit met de opgegeven @fktable_name, zoekt de procedure naar een tabel met de gespecificeerde @fktable_name die eigendom is van de database-eigenaar. Als er een bestaat, worden de kolommen van die tabel teruggegeven.

[ @fktable_qualifier = ] N'fktable_qualifier'

De naam van de tabel (met een vreemde sleutel) kwalificatie. @fktable_qualifier is een systeemnaam, met als standaard NULL. In SQL Server vertegenwoordigt de kwalificaat de databasenaam. In sommige producten vertegenwoordigt het de servernaam van de databaseomgeving van de tabel.

Codewaarden retourneren

Geen.

Resultaatset

Kolomnaam Gegevenstype Description
PKTABLE_QUALIFIER sysname Naam van de tabel (met de primaire sleutel) kwalificatie. Dit veld kan zijn NULL.
PKTABLE_OWNER sysname Naam van de eigenaar van de tabel (met de primaire sleutel). Dit veld geeft altijd een waarde terug.
PKTABLE_NAME sysname Naam van de tabel (met de primaire sleutel). Dit veld geeft altijd een waarde terug.
PKCOLUMN_NAME sysname Naam van de primaire sleutelkolommen, voor elke kolom van de teruggestuurde TABLE_NAME . Dit veld geeft altijd een waarde terug.
FKTABLE_QUALIFIER sysname Naam van de tabel (met een vreemde sleutel) kwalificatie. Dit veld kan zijn NULL.
FKTABLE_OWNER sysname Naam van de tafel (met een vreemde sleutel) eigenaar. Dit veld geeft altijd een waarde terug.
FKTABLE_NAME sysname Naam van de tabel (met een vreemde sleutel). Dit veld geeft altijd een waarde terug.
FKCOLUMN_NAME sysname Naam van de kolom vreemde sleutel, voor elke kolom van de teruggestuurde TABLE_NAME code. Dit veld geeft altijd een waarde terug.
KEY_SEQ smallint Volgnummer van de kolom in een primaire sleutel met meerdere kolommen. Dit veld geeft altijd een waarde terug.
UPDATE_RULE smallint Actie toegepast op de vreemde sleutel wanneer de SQL-operatie een update is. Mogelijke waarden:
0 = CASCADE Wijzigingen in vreemde sleutel.
1 = NO ACTION verandert als er een vreemde sleutel aanwezig is.
2 = SET_NULL
3 = stel standaard in
DELETE_RULE smallint Actie toegepast op de vreemde sleutel wanneer de SQL-operatie een verwijdering is. Mogelijke waarden:
0 = CASCADE Wijzigingen in vreemde sleutel.
1 = NO ACTION verandert als er een vreemde sleutel aanwezig is.
2 = SET_NULL
3 = stel standaard in
FK_NAME sysname Vreemde sleutel-identificatie. Het is NULL zo niet toepasbaar op de databron. SQL Server geeft de naam van de FOREIGN KEY beperking terug.
PK_NAME sysname Primaire sleutelidentificatie. Het is NULL zo niet toepasbaar op de databron. SQL Server geeft de naam van de PRIMARY KEY beperking terug.

De teruggegeven resultaten zijn geordend door FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, en KEY_SEQ.

Opmerkingen

Applicatiecodering die tabellen met uitgeschakelde vreemde sleutels bevat, kan worden geïmplementeerd op de volgende manier:

  • Tijdelijk constraint checking (ALTER TABLE NOCHECK of CREATE TABLE NOT FOR REPLICATION) uitschakelen terwijl je met de tabellen werkt, en het later weer inschakelen.

  • Triggers of applicatiecode gebruiken om relaties af te dwingen.

Als de naam van de primaire sleuteltabel is opgegeven en de naam van de vreemde sleutel tabel, NULLsp_fkeys geeft het terug dat alle tabellen die een vreemde sleutel bevatten naar de gegeven tabel terug. Als de naam van de vreemde sleuteltabel wordt opgegeven en de primaire sleutel tabelnaam is NULL, sp_fkeys geven alle tabellen die door een primaire sleutel/vreemde sleutelrelatie verbonden zijn aan vreemde sleutels in de vreemde sleutel tabel.

De sp_fkeys opgeslagen procedure is gelijkwaardig aan SQLForeignKeys in ODBC.

Permissions

Vereist SELECT toestemming voor het schema.

Voorbeelden

Het volgende voorbeeld haalt een lijst van vreemde sleutels op voor de HumanResources.Department tabel in de AdventureWorks2025 database.

USE AdventureWorks2022;
GO

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

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

Het volgende voorbeeld haalt een lijst van vreemde sleutels op voor de DimDate tabel in de AdventureWorksPDW2012 database. Er worden geen rijen teruggegeven omdat Azure Synapse Analytics geen vreemde sleutels ondersteunt.

EXECUTE sp_fkeys @pktable_name = N'DimDate';