Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 12386|Válasz: 0

[Forrás] A SqlServer megvalósítja az újonnan beillesztett rekord azonosítóját

[Linket másol]
Közzétéve 2016. 06. 15. 11:45:40 | | |

Forrás: Internet Szerző: Ismeretlen

- Adatbázisok és táblák létrehozása

létrehozza MyDataBase adatbázist

használd a MyDataBase-et

create table mytable

id int identity(1,1),

Név Varchar(20)



--Futtatjuk ezt az SQL-t, hogy megtudjuk az öninkrementális oszlop értékét, amely megfelel az imént beillesztett rekordnak

beillesztés a mytable értékekbe ('Li Si')

Válassz @@identity

2. A három módszer összehasonlítása

Az SQL Server 2000-ben három hasonló funkció van: SCOPE_IDENTITY, IDENT_CURRENT és @@IDENTITY, amelyek mindegyike az IDENTITY oszlopba beillesztett értékeket adja.

IDENT_CURRENT Visszaadja az utolsó azonosító értéket, amelyet egy adott tábla számára generált bármely ülésen és bármely hatókörben. IDENT_CURRENT Nem korlátozott a hatókör és az ülés, hanem egy meghatározott táblázat. IDENT_CURRENT Visszaadja egy adott tábla által generált értéket bármely ülésen és hatókörben.

@@IDENTITY Visszaadja az utolsó azonosító értéket, amely bármely táblára generált az aktuális ülésszak minden hatókörében.

SCOPE_IDENTITY Visszaadja az utolsó azonosított értéket, amelyet az aktuális játékidőre generáltak, valamint bármely táblázatot a jelenlegi hatókörben

SCOPE_IDENTITY és @@IDENTITY visszaadják az utolsó azonosító értéket, amely bármely táblázatban generált a jelenlegi ülésen. Azonban SCOPE_IDENTITY csak az aktuális scope-ba beillesztett értékeket adja; @@IDENTITY Nem korlátozódik egy konkrét hatókörre.

Például két táblázat van, T1 és T2, amelyeken egy INSERT trigger van definiálva. Amikor egy sort behelyezünk a T1-be, a trigger aktiválódik, és egy sor kerül be a T2-be. Ez a példa két távcsőt illusztrál: az egyik T1-en, egyet pedig T2-en a trigger hatására.

Feltételezve, hogy mind T1, mind T2 rendelkezik IDENTITY oszlopokkal, a @@IDENTITY és a SCOPE_IDENTITY eltérő értékeket adnak vissza a INSERT utasítás végén T1-en.

@@IDENTITY Visszaadja az utolsó IDENTITY oszlopértéket, amelyet bármely hatókörbe beillesztettek az aktuális ülésszakban, ami a T2-ben van behelyezve.

SCOPE_IDENTITY() adja vissza a T1-be beillesztett IDENTITY értéket, ami az utolsó INSERT, amely ugyanabban a scope-ban történt. Ha az SCOPE_IDENTITY() függvényt az identitásoszlop beillesztési utasítása előtt hívjuk meg, akkor a függvény NULL értéket ad vissza.

A IDENT_CURRENT('T1') és IDENT_CURRENT('T2') által visszaadott értékek a két tábla utolsó öninkrementális értékei.

AJQC kísérlete: (40 helyi szál, 40+40 távoli szál egyszerre tesztel, 1200W sor beillesztése), a következtetés a következmény:

1. Tipikus kaszkád alkalmazásokban. @@IDENTITY nem használható, és párhuzamos ütközések is előfordulhatnak, ha az 1W többsoros a CII850, 256M SD gépeken. P42.8C és 512M DDR esetén egyidejű konfliktus van, amikor csak 6000 vonalnál több van.

2.SCOPE_IDENTITY() teljesen megbízható, használható a tárolási folyamatban, még triggereket sem kell építeni, és nincsenek egyidejű konfliktusok

SELECT IDENT_CURRENT('TableName') - Visszaadja a megadott táblában generált utolsó címkeértéket

SELECT IDENT_INCR('TableName') – adja vissza a megadott mező increment értékét a megadott táblához

SELECT IDENT_SEED('TableName') – adja vissza a megadott tábla megjelölt mezőmag értékét

Visszaadja az utolsó beillesztett rekord automatikus számát

SELECT IDENT_CURRENT('TableName')

Térj vissza a következő automatikus számhoz:

SELECT IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))

SELECT @@IDENTITY - Visszaadja az utolsó jelölt értéket, amelyet az aktuális ülésszak összes táblájában generáltak








Előző:Az SQLServer megvalósítja a húrok univerzális bontási módszerét
Következő:Ossz meg egy hasznos keresési artefaktumot
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com