Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 12386|Svare: 0

[Kilde] SqlServer implementerer ID-en til den nylig innsatte posten

[Kopier lenke]
Publisert på 15.06.2016 11:45:40 | | |

Kilde: Internett Forfatter: Ukjent

- Opprette databaser og tabeller

opprett database MyDataBase

bruk MyDataBase

Opprett tabell mytable

id int identity(1,1),

Navn Varchar(20)



--Kjør denne SQL-en for å finne verdien til den selvinkrementelle kolonnen som tilsvarer posten som nettopp er satt inn

sett inn i mytable-verdier ('Li Si')

velg @@identity

2. Sammenligning av de tre metodene

I SQL Server 2000 finnes det tre lignende funksjoner: SCOPE_IDENTITY, IDENT_CURRENT og @@IDENTITY, som alle returnerer verdier satt inn i IDENTITY-kolonnen.

IDENT_CURRENT Returnerer den siste identifikasjonsverdien generert for en spesifikk tabell i en hvilken som helst økt og ethvert omfang. IDENT_CURRENT Ikke begrenset av omfang og sesjon, men av en spesifisert tabell. IDENT_CURRENT Returnerer verdien generert for en spesifikk tabell i en hvilken som helst økt og omfang.

@@IDENTITY Returnerer den siste identifiseringsverdien generert for en hvilken som helst tabell i alle omfang av den nåværende økten.

SCOPE_IDENTITY Returnerer den siste identifiserte verdien som ble generert for den nåværende sesjonen og enhver tabell i gjeldende omfang

SCOPE_IDENTITY og @@IDENTITY returnerer den siste identifikasjonsverdien som ble generert i en hvilken som helst tabell i den nåværende økten. Men SCOPE_IDENTITY returnerer kun verdier satt inn i det nåværende omfanget; @@IDENTITY Ikke begrenset til et spesifikt omfang.

For eksempel finnes det to tabeller, T1 og T2, hvor en INSERT-trigger er definert. Når en rad settes inn i T1, utløses triggeren og en rad settes inn i T2. Dette eksempelet illustrerer to teleskoper: ett på T1 og ett på T2 som følge av triggeren.

Forutsatt at både T1 og T2 har IDENTITY-kolonner, vil @@IDENTITY og SCOPE_IDENTITY returnere forskjellige verdier på slutten av INSERT-setningen på T1.

@@IDENTITY Returnerer den siste IDENTITY-kolonneverdien satt inn i et hvilket som helst omfang i den nåværende økten, som er verdien som er satt inn i T2.

SCOPE_IDENTITY() returnerer IDENTITY-verdien som ble satt inn i T1, som er den siste INSERT som forekom i samme omfang. Hvis SCOPE_IDENTITY()-funksjonen kalles før innsettingssetningen til identitetskolonnen skjer i omfang, returnerer funksjonen en NULL-verdi.

Verdiene som returneres av IDENT_CURRENT('T1') og IDENT_CURRENT('T2') er de siste selvinkrementelle verdiene i de to tabellene, henholdsvis.

ajqcs eksperiment: (40 lokale tråder, 40+40 eksterne tråder samtidig test, som setter inn 1200W rader), konklusjonen er:

1. I typiske kaskaderende applikasjoner. @@IDENTITY kan ikke brukes, og samtidige konflikter vil oppstå når 1W er flerradert på CII850, 256M SD-maskiner. På P42.8C og 512M DDR oppstår det en samtidig konflikt når det bare er mer enn 6000 linjer.

2.SCOPE_IDENTITY() er helt pålitelig og kan brukes i lagringsprosessen, selv triggere trenger ikke å bygges, og det er ingen samtidige konflikter

SELECT IDENT_CURRENT('TableName') - Returnerer den siste etikettverdien generert i den angitte tabellen

SELECT IDENT_INCR('TableName') - returnerer den markerte feltøkningsverdien for den angitte tabellen

SELECT IDENT_SEED('TableName') - returnerer den markerte feltfrøverdien til den angitte tabellen

Returnerer det automatiske nummeret til den siste innsatte posten

VELG IDENT_CURRENT('TableName')

Gå tilbake til neste automatiske nummer:

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

SELECT @@IDENTITY - Returnerer den siste markerte verdien som ble generert i alle tabeller i den nåværende økten








Foregående:SQLServer implementerer den universelle metoden for å splitte strenger
Neste:Del et nyttig søkeartefakt
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com