C# - MS SQL tárolt eljárások

MS SQL tárolt eljárások 2. rész

forráskód letöltése
Az MS SQL egy nagy teljesítményű adatbázis kezelő alkalmazás, kisebb, 1-2 táblás feladatokra nem nagyon használjuk. Egy megfelelően kialakított több táblát is tartalmazó adatbázisban viszont biztosan előfordulnak olyan táblák, amelyek valamilyen kapcsolatban állnak egymással. Ebben a részben két olyan eljárást mutatunk be, amelyekkel az elsődleges, valamint idegen kulcsok adatait kérdezhetjük le programból.
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

MS SQL tárolt eljárások cikksorozat