A napi SQL Server fejlesztésben az Identity típus identitásoszlopát gyakran használják egy táblastruktúra önnövő számaként. Például cikkszám, lemez sorozatszám stb. Az önnövekvő azonosított oszlopokra való hivatkozások nagyban megkönnyítik az adatbázis-programok fejlesztését, de néha ez a makacs mezőtípus is okozhat némi problémát.
1. Módosítsa az azonosító oszlop mezőértékeit:
Néha, egy függvény megvalósításához szükséges, hogy módosítani kell egy önnövekedő Identity típusú mező értékét, de ez a művelet alapértelmezés szerint nem engedélyezett az identitásoszlop típusa miatt. Például, ha 5 adatdarabot adnak hozzá normálisan az adatbázisba, és 2 törlődik ekkor, akkor ha az adatokat újra hozzáadják, az önnövekedő azonosító oszlop automatikusan 6-os értéket kap, de ha 3-at akarsz adni adatbeillesztéskor, ez alapértelmezés szerint nem engedélyezett. Ha módosítani akarod ennek a mezőnek az értékét, teljesen szabályozhatod az azonosító mező értékének behelyezését, még mindig vannak metódusok, haha.
ÁLLÍTSD IDENTITY_INSERT /[TABLE/] [BEVETÉS| OFF] A fenti állítás segítségével könnyen szabályozhatod, hogy egy tábla önnövekedő azonosító oszlopa automatikusan növekedhet-e, vagyis jogosult-e manuálisan megadni az azonosító oszlopmező értékét egy rekord beillesztésekor. Ha az on-val van megadva, beillesztéskor megadhatod az azonosító oszlopmező értékét, ami nem növeli automatikusan a kijelölt értéket. Természetesen, ha elhasználod, ezt az utasítást kell kikapcsolnod az alapértelmezett állapotra, különben a mező nem növeli automatikusan a megadott értéket, amikor legközelebb adatot adsz be.
2. Állítsd vissza az azonosító oszlop mezőértékét:
Amikor az adatrekord egy részét töröljük, és az új adatrekordot később hozzáadják, az azonosító oszlop értéke hosszú üres időszakot kap, ami nagyon kellemetlennek tűnik. Még ha törlöd is az összes rekordot a táblázatból, az identitásoszlop értéke automatikusan és végtelenül növekedni fog, nem pedig a nulláról nő. Az önnövő mező magértéke a következő állítással visszaállítható:
DBCC CHECKIDENT(TABLE, [RESEED| NORESEED], [1]) A fenti állítás arra kényszeríti, hogy a megadott tábla magértékét 1-re állítsák vissza. Ha viszont nem akarod a magot 1-re állítani, a harmadik paramétert lecserélheted a használni kívánt magértékre. Ha a jelenlegi magot akarod tudni, ahelyett, hogy a azonosított magot állítanád vissza, akkor a NORESSEED-et kell használnod a harmadik paraméter beállítása helyett. |