Egyedi (elsődleges) kulcsnak a tábla rekordjait egyértelműen azonosító kulcsot nevezzük, ami esetenként több oszlopot is magába foglalhat. Ha az ebben a kulcsban szereplő oszlop egy másik táblában is szerepel, akkor abban a táblában ezek a mezők idegen kulcsként szerepelnek. Azért idegen kulcs, mert csupán annyi szerepe van, hogy a két táblát ezen a mezőn keresztül összekapcsolhassuk.
sp_pkeys.sql: Elsődleges kulcs információk lekérdezése
Az elsődleges kulcs információk lekérdezésére szolgál az sp_pkeys tárolt eljárás. Az eljárás szintaxisa a következőképpen néz ki:
sp_pkeys [ @table_name = ] 'name'
[ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ]
A tábla nevét a table_name paraméterben adhatjuk meg. Az eljárás egy listát ad vissza az alábbi szerkezettel:
| Mező |
Típus |
Leírás |
| TABLE_QUALIFIER |
sysname |
A tábla qualifier neve. |
| TABLE_OWNER |
sysname |
A tábla tulajdonosa. |
| TABLE_NAME |
sysname |
A tábla neve. |
| COLUMN_NAME |
sysname |
Az oszlop neve. |
| KEY_SEQ |
smallint |
a több oszlopból álló kulcsoknál az oszlop pozíciója. |
| PK_NAME |
sysname |
Az elsődleges kulcs azonosítója (neve). |
sp_fkeys.sql: Idegen-kulcs információk lekérdezése
Az idegen kulcsok információit az sp_fkeys tárolt eljárással kérdezhetjük le.
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
A pktable_name paraméterben kell megadni a tábla nevét, a név maszkolása nem engedélyezett. Az fktable_name paraméterben annak a táblának a nevét adhatjuk meg, amelyre az idegen kulcs hivatkozik.
Az eredmény tábla szerkezete a következőképpen néz ki:
| Mező |
Típus |
Leírás |
| PKTABLE_QUALIFIER |
sysname |
Az elsődleges kulcsot tartalmazó tábla qualifier neve. |
| PKTABLE_OWNER |
sysname |
Az elsődleges kulcsot tartalmazó tábla tulajdonosa. |
| PKTABLE_NAME |
sysname |
Az elsődleges kulcsot tartalmazó tábla neve. |
| PKCOLUMN_NAME |
sysname |
Az elsődleges kulcsot alkotó oszlop(ok) neve(i). |
| FKTABLE_QUALIFIER |
sysname |
Az idegen kulcsot tartalmazó tábla qualifier neve. |
| FKTABLE_OWNER |
sysname |
Az idegen kulcsot tartalmazó tábla tulajdonosa. |
| FKTABLE_NAME |
sysname |
Az idegen kulcsot tartalmazó tábla neve. |
| FKCOLUMN_NAME |
varchar(32) |
Az idegen kulcsot alkotó oszlop(ok) neve(i). |
| KEY_SEQ |
smallint |
A több oszlopot tartalmazó kulcsban az oszlopok pozíciója. |
| UPDATE_RULE |
smallint |
Ez az érték megmondja, hogy frissítéskor hogyan változik az idegen kulcs. Értékei lehetnek: 0-kaszkádolt frissítés, 1=nem történik semmi, 2=az idegen kulcs érték NULL lesz. |
| DELETE_RULE |
smallint |
Ez az érték azt mondja meg, hogy törléskor hogyan viselkedik az idegen kulcs. Értékei ugyanazok lehetnek, mint az UPDATE_RULE mezőnek. |
| FK_NAME |
sysname |
Az idegen kulcs neve. |
| PK_NAME |
sysname |
Az elsődleges kulcs neve |