SQLShack (Magyar)

Ez a cikk az SQL Server azonossági funkcióját vizsgálja példákkal és különbségekkel ezen funkciók között.

Identity oszlopok áttekintése

az SQL Serverben identity oszlopot hozunk létre az inkrementális értékek automatikus létrehozásához. Előre meghatározott vetőmag (kezdeti érték) és lépés (növekmény) érték alapján állít elő értékeket. Tegyük fel például, hogy van egy alkalmazotti asztalunk, és automatikusan szeretnénk létrehozni az EmployeeID-et., Van egy kezdő alkalmazott azonosítója 100 tovább szeretnénk növelni minden új EmpID egy. Ebben az esetben meg kell határoznunk a következő értékeket.

  • Seed: 100
  • Step: 1

helyezzen be néhány rekordot ebben a táblázatban, és tekintse meg a rekordokat.

láthatja, hogy az első alkalmazott 100-as azonosító értéket kap, és minden új rekordazonosító érték egy növekményt kap.

van néhány hasznos Identitásfüggvényünk az SQL Serverben, hogy a táblázat identitás oszlopaival dolgozzunk. Vizsgáljuk meg a következő IDENTITÁSFUNKCIÓKAT példákkal.,

  • SQL @@IDENTITY Function
  • SQL SCOPE_IDENTITY () Function
  • SQL IDENT_CURRENT Function
  • SQL IDENTITY Function

SQL @@IDENTITY Function

a system function @@IDENTITY függvényt használjuk, hogy visszaadjuk a maximális használt IDENTITY értéket a táblázatban az IDENTITY oszlopban az aktuális munkamenet alatt. Miután beillesztettünk egy sort egy táblázatba, a @ @ IDENTITY funkció oszlop megadja a nyilatkozat által generált IDENTITÁSÉRTÉKET. Ha olyan lekérdezést futtatunk, amely nem generált IDENTITÁSÉRTÉKEKET, akkor NULL értéket kapunk a kimeneten., Az SQL @ @ IDENTITY az aktuális munkamenet hatálya alatt fut. Nem tudjuk használni egy távoli vagy kapcsolt szerveren.

értsük meg a következő példával.

  • 1. lépés: az EmployeeData table
  • 2. lépés: az aktuális munkamenetben egy rekordot helyezünk be az EmployeeData táblába., Ez növeli a személyazonosság érték, amelyet egy
  • 3. Lépés: Tudjuk ellenőrizze, hogy a maximális használt identitás érték 111
  • 4. Lépés: Használjuk a SELECT @@IDENTITY funkció az aktuális munkamenet, hogy az identity értéket generált ezen az ülésen

nézzünk be a több rekordot ebben a táblázatban, majd végrehajtani a SELECT @@IDENTITY.

Ha több rekordot illesztünk be egy munkamenetbe, válassza a @ @ Identity lehetőséget, amely visszaadja az ebben a munkamenetben generált maximális IDENTITÁSÉRTÉKET., A következő példában három rekordot helyezünk be, az IDENTITÁSÉRTÉKEKET pedig hárommal növeljük a jelenlegi 111 identitásértékből.

Ha az utasítás nem generált identitásértékeket, akkor NULL értékeket ad vissza a kimeneten.

SQL SCOPE_IDENTITY () függvény

használjuk SCOPE_IDENTITY () függvény vissza az utolsó identitás értéke a táblázatban az aktuális hatókör. A hatókör lehet modul, trigger, funkció vagy tárolt eljárás., Az SQL SCOPE_IDENTITY() függvényt a @@IDENTITY függvényhez hasonlóan tekinthetjük, de egy adott hatókörre korlátozódik. Visszaadja a NULL értéket, ha ez a funkció részt vesz, mielőtt egy beszúrás utasítás értéket generál ugyanazon hatókör alatt.

a következő példában látjuk, hogy mind a @@IDENTITY, mind a SCOPE_IDENTITY() ugyanazt az értéket adja vissza az aktuális munkamenetben, valamint hasonló hatókörben.

értsük meg a különbséget SCOPE_IDENTITY() és @@ @ IDENTITY között egy másik példával.,

vegyük úgy, hogy van két táblázat EmployeeData és osztályok táblázat. Létrehozunk egy betét ravaszt a Foglalkoztatottadatasztal. Miután beillesztettük bármelyik sort a EmployeeData-ra, felszólítja a meghatározott ravaszt egy sor beillesztésére az osztályokban.

a következő lekérdezésben létrehozunk egy triggert az alapértelmezett ” IT ” érték beillesztésére a szervezeti egységek táblájában a EmployeeData táblázat minden betétjéhez.,f7″>

1
2
3
4
5
6

CREATE TRIGGER T_INSERT_DEPARTMENT
A EmployeeData
A BETÉT, MINT
BEGIN
BESZÚRÁS Szervezeti ÉRTÉKEK (‘EZ’)
END;

nézzünk be az értéket a Munkavállaló adatok táblázat, illetve megtekinthetik a kimenő, mind a @@IDENTITY and SCOPE_IDENTITY() függvények.,

az aktuális munkamenetben adatokat illesztettünk az EmployeeData táblázatba. Ez létrehoz egy identitás ebben a táblázatban. Az identitás mag értéke 1 Az Employleeedata táblázatban.

miután beillesztettük az értéket az EmployeeData táblába, aktivál egy ravaszt az érték beillesztéséhez az osztályok táblájába. Az identitás vetőmag értéke 100 az osztályok táblázatában.

  • a SELECT @@IDENTITY függvény 100 kimenetét kapjuk
  • SCOPE_IDENTITY függvény csak az aktuális hatókör alatt adja vissza az identitás értékét., 1 kimenetet ad ehhez a függvényhez

SQL IDENT_CURRENT() függvény

az IDENT_CURRENT funkciót használjuk, hogy visszaadjuk a megadott táblához létrehozott utolsó IDENTITÁSÉRTÉKET bármilyen kapcsolat alatt. Nem veszi figyelembe az SQL lekérdezés hatókörét, amely identitásértéket generál. Meg kell adnunk azt a táblázatot, amelyhez ellenőrizni akarjuk az identitás értékét.

a következő képernyőképen láthatjuk, hogy adatokat helyezünk be a Session id 64-be, és 2 identitásértéket generál az EmployeeData táblázatban.,

egy másik kapcsolatablakban ellenőrizhetjük az EmployeeData tábla aktuális identitásértékét, és ugyanazt a kimenetet kaphatjuk, mint az identity value 2.,

1
SELECT IDENT_CURRENT(‘EmployeeData’) AS IdentityValue

SQL IDENTITY Function

In my previous article, we explored SQL SELECT INTO Statement, to create a new table and inserted data into it from the existing table., Az SQL IDENTITY funkcióval az SQL SELECT által létrehozott táblázatban szereplő azonossági értékeket beilleszthetjük az utasításba.

alapértelmezés szerint, ha egy forrástábla identitás oszlopot tartalmaz, akkor a Select into statement segítségével létrehozott táblázat örökli azt. Vegyünk egy olyan forgatókönyvet, amelyben egy táblázatot szeretne létrehozni a SELECT into statement használatával a nézet kimenetéből, vagy csatlakozzon több táblából. Ebben az esetben identitás oszlopot szeretne létrehozni egy új táblázatban is.,

  • Megjegyzés: Az SQL IDENTITY funkció különbözik attól az IDENTITY tulajdonságtól, amelyet bármilyen táblázat létrehozásakor használunk.

meg kell adnunk egy oszlop adattípusát az SQL Identity funkció használatához. Az identitáskonfiguráció meghatározásához meg kell adnunk a SEED and Step értékeket is.

nem tudjuk használni az SQL IDENTITY funkciót egy kiválasztott nyilatkozatban. A következő hibaüzenetet kapjuk.

Msg 177, Level 15, State 1, Line 2az IDENTITY funkció csak akkor használható, ha a SELECT utasítás egy INTO záradékot tartalmaz.,

hozzunk létre egy táblázatot az SQL SELECT in statement használatával a következő lekérdezéssel.

a nyilatkozat végrehajtása után ellenőrizze a táblázat tulajdonságait az sp_help paranccsal.

1
sp_help ‘TEMPTABLE’

látod az azonosító oszlopban az TEMPTABLE tulajdonságok, mint egy a meghatározott feltételek mellett.,

nézzünk meg egy másik példát. Hajtsa végre a következő parancsot.,

1
2
3
4
5

VÁLASSZA ki a SZEMÉLYAZONOSSÁG( INT, 100, 2), MINT NEW_ID,
ID
Név
A temp2
A employeedata;

már az azonosító oszlopban az EmployeeData táblázat. Az új temp2 táblázat örökli az identitás oszlopot is., Nem lehet több azonosító oszlop a táblázatban. Ennek köszönhetően a következő hibaüzenetet kapjuk.

Msg 8108, Level 16, State 1, Line 1cannot add identity oszlop, a SELECT into statement, a táblázat “temp2”, amely már oszlop “ID”, amely örökli az identity tulajdonság.

összefoglaló

  1. SQL IDENTITY Functions SCOPE_IDENTITY, IDENT_CURRENT, and @IDENTITY returns similar output for an IDENTITY columns in current session
  2. SCOPE_IDENTITY returns values under the current scope only., Tudjuk meg a hatálya, mint egy modul, Tárolt eljárás, a ravaszt, vagy egy funkció
  3. IDENT_CURRENT függvény identitás értékét az adott tábla vonatkozásában az egy kapcsolat, hogy a módosított érték
  4. használhatjuk az SQL SZEMÉLYAZONOSÍTÓ funkció megadásához IDENTITÁS egy táblázat segítségével létrehozott SQL VÁLASSZA ki A nyilatkozatot

Következtetés

volt ez a cikk, feltártuk a Személyazonosság függvények az SQL Server. Meg kell ismernie a funkciókat használni őket írásban t-SQL lekérdezések. Ha észrevételei vagy kérdései vannak, nyugodtan hagyja őket az alábbi megjegyzésekben.,

  • Szerző
  • Utolsó Hozzászólás
Mint egy MCSA tanúsított a Microsoft Certified Edző Gurgaon, India, 13 éves tapasztalat, Rajendra működik, hogy a különböző nagyvállalatok összpontosítva teljesítmény optimalizálás, monitoring, magas rendelkezésre állás, valamint katasztrófa-helyreállítási stratégiák megvalósítását., Több száz hiteles cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git és kapcsolódó technológiák területén, amelyeket eddig több mint 10m olvasó nézett meg.
ő az alkotója az egyik legnagyobb ingyenes online gyűjtemények cikkek egyetlen témában, az ő 50 részes sorozat SQL Server mindig rendelkezésre álló csoportok. Az SQL Server közösséghez való hozzájárulása alapján 2020-ban és 2021-ben az SQLShack-en folyamatosan elismerték különböző díjakkal, köztük a rangos “az év legjobb szerzőjével”.,
Raj mindig érdekli az új kihívásokat, így ha segítségre van szüksége az írásaiban szereplő bármely témában, akkor rajendra-ban érhető el.gupta16@gmail.,com
összes Megtekintése hozzászólások Rajendra Gupta

Legújabb hozzászólások Rajendra Gupta (minden)
  • Végrehajtása kisebb-nagyobb verzió frissítéseket AWS RDS SQL Server – január 29, 2021
  • Bevetni AWS RDS PostgreSQL esetekben – január 27, 2021
  • Vándorolnak az intézményi SQL adatbázisok, hogy AWS RDS SQL Server segítségével AWS DMS – január 25, 2021

Share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük