Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12386|Svar: 0

[Källa] SqlServer implementerar ID:t för den nyligen insatta posten

[Kopiera länk]
Publicerad på 2016-06-15 11:45:40 | | |

Källa: Internet Författare: Okänd

- Skapa databaser och tabeller

skapa databas MyDataBase

använd MyDataBase

skapa tabell mytable

id int identitet(1,1),

Namn Varchar(20)



--Exekvera denna SQL för att ta reda på värdet på den självinkrementella kolumnen som motsvarar posten som just har lagts in

infoga i mytable-värden('Li Si')

Välj @@identity

2. Jämförelse av de tre metoderna

I SQL Server 2000 finns tre liknande funktioner: SCOPE_IDENTITY, IDENT_CURRENT och @@IDENTITY, som alla returnerar värden som infogas i IDENTITY-kolumnen.

IDENT_CURRENT Returnerar det senaste identifieringsvärdet som genererats för en specifik tabell i varje session och varje omfattning. IDENT_CURRENT Inte begränsat av omfattning och session, utan av en specificerad tabell. IDENT_CURRENT Returnerar värdet som genererats för en specifik tabell i varje session och omfattning.

@@IDENTITY Returnerar det senaste identifieringsvärdet som genererats för någon tabell i alla scopes av den aktuella sessionen.

SCOPE_IDENTITY Returnerar det senast identifierade värdet som genererades för den aktuella sessionen och varje tabell i det aktuella omfånget

SCOPE_IDENTITY och @@IDENTITY returnerar det senaste identifieringsvärdet som genererades i någon tabell under den aktuella sessionen. Dock returnerar SCOPE_IDENTITY endast värden som infogas i den aktuella omfattningen; @@IDENTITY Inte begränsat till ett specifikt omfängelse.

Till exempel finns det två tabeller, T1 och T2, där en INSERT-trigger är definierad. När en rad sätts in i T1 triggas triggern och en rad sätts in i T2. Detta exempel illustrerar två scopes: ett på T1 och ett på T2 som ett resultat av triggern.

Om både T1 och T2 har IDENTITY-kolumner, kommer @@IDENTITY och SCOPE_IDENTITY att returnera olika värden i slutet av INSERT-satsen på T1.

@@IDENTITY Returnerar det senaste IDENTITY-kolumnvärdet som infogades i någon scope i den aktuella sessionen, vilket är värdet som satts in i T2.

SCOPE_IDENTITY() returnerar IDENTITY-värdet som infogades i T1, vilket är det senaste INSERT som inträffade i samma scope. Om funktionen SCOPE_IDENTITY() anropas innan insättningssatsen i identitetskolumnen sker i scope, returnerar funktionen ett NULL-värde.

Värdena som returneras av IDENT_CURRENT('T1') och IDENT_CURRENT('T2') är de sista självinkrementella värdena i de två tabellerna.

ajqc:s experiment: (40 lokala trådar, 40+40 fjärrtrådar samtidigt test, insättning av 1200W-rader), slutsatsen är:

1. I typiska kaskadapplikationer. @@IDENTITY kan inte användas, och samtidiga konflikter uppstår när 1W är flerradigt på CII850, 256M SD-maskiner. På P42.8C och 512M DDR finns en parallell konflikt när det bara finns mer än 6000 linjer.

2.SCOPE_IDENTITY() är absolut pålitlig och kan användas i lagringsprocessen, även triggers behöver inte byggas, och det finns inga samtidiga konflikter

SELECT IDENT_CURRENT('TableName') - Returnerar det senaste etikettvärdet som genererats i den angivna tabellen

SELECT IDENT_INCR('TableName') – returnerar det markerade fältinkrementvärdet för den angivna tabellen

SELECT IDENT_SEED('TableName') - returnerar det markerade fältfrövärdet för den angivna tabellen

Returnerar det automatiska numret för den senast insatta posten

VÄLJ IDENT_CURRENT('TableName')

Återgå till nästa automatiska nummer:

VÄLJ IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))

SELECT @@IDENTITY - Returnerar det senast markerade värdet som genererades i alla tabeller i den aktuella sessionen








Föregående:SQLServer implementerar den universella metoden att dela strängar
Nästa:Dela en användbar sökartefakt
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com