Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 12386|Svar: 0

[Kilde] SqlServer implementerer ID'et for den nyindsatte post

[Kopier link]
Opslået på 15/06/2016 11.45.40 | | |

Kilde: Internet Forfatter: Ukendt

- Opret databaser og tabeller

Opret database MyDataBase

brug MyDataBase

Opret tabel mytable

id int identitet(1,1),

Navn Varchar(20)



--Udfør denne SQL for at finde værdien af den selv-inkrementelle kolonne, der svarer til den post, der netop er indsat

indsæt i mytable værdier('Li Si')

Vælg @@identity

2. Sammenligning af de tre metoder

I SQL Server 2000 er der tre lignende funktioner: SCOPE_IDENTITY, IDENT_CURRENT og @@IDENTITY, som alle returnerer værdier indsat i IDENTITY-kolonnen.

IDENT_CURRENT Returnerer den sidst genererede identifikationsværdi for en specifik tabel i enhver session og ethvert scope. IDENT_CURRENT Ikke begrænset af omfang og session, men af en specificeret tabel. IDENT_CURRENT Returnerer værdien genereret for en specifik tabel i enhver session og omfang.

@@IDENTITY Returnerer den sidste identifikationsværdi, der er genereret for en hvilken som helst tabel i alle scopes af den aktuelle session.

SCOPE_IDENTITY Returnerer den sidst identificerede værdi, der blev genereret for den aktuelle session og enhver tabel i det aktuelle omfang

SCOPE_IDENTITY og @@IDENTITY returnerer den sidste identifikationsværdi, der blev genereret i en hvilken som helst tabel i den aktuelle session. Dog returnerer SCOPE_IDENTITY kun værdier, der er indsat i det aktuelle scope; @@IDENTITY Ikke begrænset til et specifikt omfang.

For eksempel er der to tabeller, T1 og T2, hvor en INSERT-trigger er defineret. Når en række indsættes i T1, udløses triggeren, og en række indsættes i T2. Dette eksempel illustrerer to scopes: et på T1 og et på T2 som følge af triggeren.

Hvis både T1 og T2 har IDENTITY-kolonner, vil @@IDENTITY og SCOPE_IDENTITY returnere forskellige værdier i slutningen af INSERT-sætningen på T1.

@@IDENTITY Returnerer den sidste IDENTITY-kolonneværdi, der er indsat i et hvilket som helst scope i den aktuelle session, hvilket er værdien indsat i T2.

SCOPE_IDENTITY() returnerer IDENTITY-værdien indsat i T1, som er den sidste INSERT, der fandt sted i samme scope. Hvis funktionen SCOPE_IDENTITY() kaldes, før indsættelsessætningen til identitetskolonnen sker i scope, returnerer funktionen en NULL-værdi.

De værdier, der returneres af IDENT_CURRENT('T1') og IDENT_CURRENT('T2'), er henholdsvis de sidste selv-inkrementelle værdier af de to tabeller.

ajqc's eksperiment: (40 lokale tråde, 40+40 fjerntråde samtidig test, indsættelse af 1200W rækker), konklusionen er:

1. I typiske kaskaderingsapplikationer. @@IDENTITY kan ikke bruges, og samtidige konflikter vil opstå, når 1W er fler-række på CII850, 256M SD-maskiner. På P42.8C og 512M DDR er der en samtidig konflikt, hvor der kun er mere end 6000 linjer.

2.SCOPE_IDENTITY() er fuldstændig pålidelig og kan bruges i lagringsprocessen, selv triggere behøver ikke at blive bygget, og der er ingen samtidige konflikter

SELECT IDENT_CURRENT('TableName') - Returnerer den sidste labelværdi, der er genereret i den angivne tabel

SELECT IDENT_INCR('TableName') - returnerer den markerede feltinkrementværdi for den angivne tabel

SELECT IDENT_SEED('TableName') - returnerer den markerede feltseed-værdi for den angivne tabel

Returnerer det automatiske nummer for den sidst indsatte post

VÆLG IDENT_CURRENT('TableName')

Gå tilbage til det næste automatiske nummer:

VÆLG IDENT_CURRENT('TableName')+(VÆLG IDENT_INCR('TableName'))

SELECT @@IDENTITY - Returnerer den sidst markerede værdi, der blev genereret i alle tabeller i den aktuelle session








Tidligere:SQLServer implementerer den universelle metode til at splitte strenge
Næste:Del et nyttigt søgeartefakt
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com