Hogyan ellenőrizhető az ideiglenes tábla létezése

Samorodov Fedor Anatolyevich. Hogyan ellenőrizhető az ideiglenes tábla létezése

Hogyan ellenőrizhető az ideiglenes tábla létezése

Az SQL Server ideiglenes táblákkal dolgozhat. Az ilyen táblák nevei egy vagy két rácskal kezdődnek (#). Nyilvánvalóan ideiglenes táblákat találtak, hogy ideiglenesen tárolhassák az adatokat. Például bármely számítás közbenső eredményeinek tárolására. Vagy bizonyos adatok átvitele egyik folyamatról a másikra.

Néha meg kell vizsgálni, hogy egy bizonyos ideiglenes táblát már létrehoztak-e vagy sem. Hogyan kell csinálni?

Ha globális ideiglenes tábla van, akkor a hagyományos módon ellenőrizhető - a táblázatok listájával. Csak ne felejts el korrigálni azt a tényt, hogy az összes ideiglenes táblázatot - mind a globális, mind a helyi - nem a jelenlegi felhasználói adatbázisban, hanem a TempDB rendszer adatbázisában hozták létre.

Nézd meg a példát. Az egyik folyamat globális átmeneti táblát hozott létre. Most ez és minden más folyamat egy szokásos táblára utalhat. Különösen a rendszerkatalógusok sys.Tables és Information_Schema.Tables-ban láthatók.

Hogyan ellenőrizhető az ideiglenes tábla létezése

Jó. Az ilyen ellenőrző mechanizmus azonban nem működik, ha helyi ideiglenes tábla. Végül is ezek a táblázatok minden egyes munkamenethez külön-külön kerülnek létrehozásra, és különböző munkamenetekben lehetnek táblázatok azonos névvel. Hogy nem volt névkonfliktus, a szerver átnevezi a helyi táblákat, és létrehozza őket a TempDB-ben.

Tehát két idõszakban létrehozom a helyi ideiglenes táblákat ugyanazon nevekkel. Minden munkamenetben a kiszolgáló megkülönbözteti tábláját másoktól, de a rendszerkönyvtárakban egyszerre láthatók:

Hogyan ellenőrizhető az ideiglenes tábla létezése

Ha közelebbről megnézed, láthatod, hogy a szerver egy egyedi véget ad hozzá az asztalneveknek, amelyek alapján meghatározza, hogy melyik táblázatban van:

Hogyan ellenőrizhető az ideiglenes tábla létezése

Nem lenne kívánatos az SQL-kóddal ezekkel a végekkel foglalkozni. Szintén nem szükséges. Mert az Object_ID függvény. amely automatikusan kiválasztja a kívánt táblázatot:

Hogyan ellenőrizhető az ideiglenes tábla létezése

Ha egy adott névvel rendelkező objektum létezik, akkor az Object_ID függvény visszaadja annak azonosítóját, és ha nem, NULL. Így kényelmesen és megbízhatóan ellenőrizhetjük egy ilyen szokatlan tárgy jelenlétét, mint egy helyi ideiglenes tábla:

Hogyan ellenőrizhető az ideiglenes tábla létezése

Ez a funkció rendelkezik egy opcionális második paraméterrel, amelyet egy adott típusú objektum meghatározásához használhat. "U" azt jelenti, hogy asztalt keresünk.