Megosztás a következőn keresztül:


sp_fkeys (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)Raktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Logikus idegen kulcsinformációkat ad vissza a jelenlegi környezethez. Ez az eljárás mutatja a külföldi kulcskapcsolatokat, beleértve a letiltott külföldi kulcsokat is.

Transact-SQL szintaxis konvenciók

Szemantika

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'

A táblázat neve, a fő kulminccsel együtt, a katalógusinformációt szolgáltatták vissza. @pktable_namea sysname, alapértelmezettként NULL. A wildcard mintás párosítás nem támogatott. Ezt a paramétert vagy a @fktable_name paramétert, vagy mindkettőt meg kell adni.

[ @pktable_owner = ] N'pktable_owner'

A tábla tulajdonosának neve (a fő kulccsal) a katalógusinformáció visszaadásához szolgált. @pktable_owner a sysname, alapértelmezettként NULL. A wildcard mintás párosítás nem támogatott. Ha @pktable_owner nincs megadva, akkor az alap adatbázis-kezelő rendszer (DBMS) alapértelmezett táblázat-láthatósági szabályai érvényesek.

Az SQL Serverben, ha a jelenlegi felhasználó rendelkezik egy megadott nevű táblával, az adott tábla oszlopai visszakerülnek. Ha @pktable_owner nincs megadva, és a jelenlegi felhasználó nem birtokolja a megadott @pktable_name táblát, az eljárás olyan táblát keres, amelyhez a megadott @pktable_name tartozik az adatbázis tulajdonosa. Ha létezik ilyen, akkor az adott táblázat oszlopai visszakerülnek.

[ @pktable_qualifier = ] N'pktable_qualifier'

A táblázat neve (az elsődleges kulcssal) kvalifikátor. @pktable_qualifier a sysname, alapértelmezettként NULL. Különböző DBMS termékek háromrészes elnevezést támogatnak a táblákhoz (qualifier.owner.name). Az SQL Serverben a minősítő az adatbázis nevét jelöli. Egyes termékekben ez a tábla adatbázis környezetének szervernevét képviseli.

[ @fktable_name = ] N'fktable_name'

A tábla neve (idegen kulccsal) a katalógusinformációt szolgáltatja vissza. @fktable_namea sysname, alapértelmezettként NULL. A wildcard mintás párosítás nem támogatott. Ezt a paramétert vagy a @pktable_name paramétert, vagy mindkettőt meg kell adni.

[ @fktable_owner = ] N'fktable_owner'

A táblázat tulajdonosának neve (idegen kulccsal) szolgált a katalógusinformáció visszaadására. @fktable_owner a sysname, alapértelmezett értékével.NULL A wildcard mintás párosítás nem támogatott. Ha @fktable_owner nincs megadva, akkor az alap adatbázisok alapértelmezett táblázat láthatósági szabályai érvényesek.

Az SQL Serverben, ha a jelenlegi felhasználó rendelkezik egy megadott nevű táblával, az adott tábla oszlopai visszakerülnek. Ha @fktable_owner nincs megadva, és a jelenlegi felhasználó nem birtokolja a megadott @fktable_name táblát, az eljárás olyan táblát keres, amelyen a megadott @fktable_name az adatbázis tulajdonosa van. Ha létezik ilyen, akkor az adott táblázat oszlopai visszakerülnek.

[ @fktable_qualifier = ] N'fktable_qualifier'

A táblázat neve (idegen kulcscal) kvalifikátor. @fktable_qualifier a sysname, alapértelmezett értékével.NULL Az SQL Serverben a minősítő az adatbázis nevét jelöli. Egyes termékekben ez a tábla adatbázis környezetének szervernevét képviseli.

Kódértékek visszaadása

Nincs.

Eredményhalmaz

Oszlop név Adattípus Description
PKTABLE_QUALIFIER sysname A táblázat neve (a fő kulcs mellett) kvalifikátor. Ez a mező lehet NULL.
PKTABLE_OWNER sysname A tábla (a fő kulccsal együtt) tulajdonosának neve. Ez a mező mindig értéket ad vissza.
PKTABLE_NAME sysname A tábla neve (a fő kulvával). Ez a mező mindig értéket ad vissza.
PKCOLUMN_NAME sysname A visszatért oszlopok TABLE_NAME elsődleges kulcsoszlopainak neve. Ez a mező mindig értéket ad vissza.
FKTABLE_QUALIFIER sysname A táblázat neve (idegen kulcscal) kvalifikátor. Ez a mező lehet NULL.
FKTABLE_OWNER sysname A tábla neve (idegen kulccsal) tulajdonosa. Ez a mező mindig értéket ad vissza.
FKTABLE_NAME sysname A táblázat neve (idegen kulcscal). Ez a mező mindig értéket ad vissza.
FKCOLUMN_NAME sysname Az idegen kulcsoszlop neve, minden visszaadott TABLE_NAME oszlophoz. Ez a mező mindig értéket ad vissza.
KEY_SEQ smallint Az oszlop sorszáma egy többoszlopos elsődleges kulcsban. Ez a mező mindig értéket ad vissza.
UPDATE_RULE smallint Művelet az idegen kulcsra alkalmazva, amikor az SQL művelet frissítés. Lehetséges értékek:
0 = CASCADE Átalakulás idegen hangnemre.
1 = NO ACTION változik, ha idegen kulcs van.
2 = SET_NULL
3 = alapértelmezett beállítás
DELETE_RULE smallint Művelet az idegen kulcsra, amikor az SQL művelet törlés. Lehetséges értékek:
0 = CASCADE Átalakulás idegen hangnemre.
1 = NO ACTION változik, ha idegen kulcs van.
2 = SET_NULL
3 = alapértelmezett beállítás
FK_NAME sysname Külföldi kulcsazonosító. NULL Ha nem alkalmazható az adatforrásra. Az SQL Server adja vissza a FOREIGN KEY korlátozás nevet.
PK_NAME sysname Elsődleges kulcsazonosító. NULL Ha nem alkalmazható az adatforrásra. Az SQL Server adja vissza a PRIMARY KEY korlátozás nevet.

A visszaadott eredményeket , FKTABLE_QUALIFIER, FKTABLE_OWNER, és FKTABLE_NAME. sorrendben KEY_SEQrendezik.

Megjegyzések

Az alkalmazáskódolás, amely letiltott külföldi kulcsokkal rendelkező táblákat tartalmaz, az alábbi módszerekkel valósítható meg:

  • Ideiglenesen letiltom a korlátozásellenőrzést (ALTER TABLE NOCHECK vagy CREATE TABLE NOT FOR REPLICATION) a táblázatokkal való munka közben, majd később újra engedélyezem.

  • Triggerek vagy alkalmazáskód használata a kapcsolatok érvényesítésére.

Ha a fő kulcstábla neve megadva van, és az idegen kulcstáblának a NULLneve, sp_fkeys akkor minden olyan tábla visszaad, amely idegen kulcsot tartalmaz a megadott táblában. Ha megadják az idegen kulcstáblás név, és a fő kulcstábla neve NULL, sp_fkeys az összes táblát visszaad, amely egy elsődleges kulcs/idegen kulcs kapcsolattal kapcsolódik az idegen kulcstáblában lévő idegen kulcsokhoz.

A sp_fkeys tárolt eljárás az ODBC-ben az SQLForeignKeys értékű eljárással.

Permissions

Engedély SELECT szükséges a sémához.

Példák

A következő példa az adatbázisban található táblázat HumanResources.Department külföldi kulcsainak AdventureWorks2025 listáját kéri.

USE AdventureWorks2022;
GO

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

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

A következő példa az adatbázisban található táblázat DimDate külföldi kulcsainak AdventureWorksPDW2012 listáját kéri. Nem térnek vissza sorok, mert az Azure Synapse Analytics nem támogatja az idegen kulcsokat.

EXECUTE sp_fkeys @pktable_name = N'DimDate';