Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12386|Răspunde: 0

[Sursă] SqlServer implementează ID-ul noii înregistrări inserate

[Copiază linkul]
Postat pe 15.06.2016 11:45:40 | | |

Sursa: Internet Autor: Necunoscut

- Crearea bazelor de date și tabele

creează baza de date MyDataBase

folosește MyDataBase

creează tabelă, mytable

id int identitate(1,1),

numele Varchar(20)



--Executați acest SQL pentru a afla valoarea coloanei auto-incrementale corespunzătoare recordului care tocmai a fost inserat

inserați în valorile mytable ('Li Si')

selectează @@identity

2. Comparația celor trei metode

În SQL Server 2000, există trei caracteristici similare: SCOPE_IDENTITY, IDENT_CURRENT și @@IDENTITY, toate returnând valori inserate în coloana IDENTITY.

IDENT_CURRENT returnează ultima valoare de identificare generată pentru un anumit tabel în orice sesiune și orice scop. IDENT_CURRENT Nu este limitat de scop și sesiune, ci de un tabel specificat. IDENT_CURRENT returnează valoarea generată pentru un anumit tabel în orice sesiune și domeniu.

@@IDENTITY returnează ultima valoare de identificare generată pentru orice tabel în toate domeniile sesiunii curente.

SCOPE_IDENTITY returnează ultima valoare identificată generată pentru sesiunea curentă și orice tabel din domeniul curent

SCOPE_IDENTITY și @@IDENTITY returnează ultima valoare de identificare generată în orice tabel din sesiunea curentă. Totuși, SCOPE_IDENTITY returnează doar valorile introduse în domeniul curent; @@IDENTITY Nu este limitat la un anumit domeniu.

De exemplu, există două tabele, T1 și T2, pe care este definit un trigger INSERT. Când un rând este introdus în T1, declanșatorul este declanșat, iar un rând este introdus în T2. Acest exemplu ilustrează două lunete: unul pe T1 și unul pe T2 ca urmare a declanșatorului.

Presupunând că atât T1, cât și T2 au coloane IDENTITY, @@IDENTITY și SCOPE_IDENTITY vor returna valori diferite la finalul instrucțiunii INSERT pe T1.

@@IDENTITY returnează ultima valoare a coloanei IDENTITY introdusă în orice domeniu în sesiunea curentă, care este valoarea introdusă în T2.

SCOPE_IDENTITY() returnează valoarea IDENTITY introdusă în T1, care este ultimul INSERT care a avut loc în același scop. Dacă funcția SCOPE_IDENTITY() este apelată înainte ca instrucțiunea de inserare în coloana de identitate să aibă loc în domeniu, funcția returnează o valoare NULĂ.

Valorile returnate de IDENT_CURRENT('T1') și IDENT_CURRENT('T2') sunt ultimele valori auto-incrementale ale celor două tabele, respectiv.

Experimentul AJQC: (40 de fire locale, 40+40 fire de execuție la distanță simultan, testare simultană, inserarea de rânduri de 1200W), concluzia este:

1. În aplicațiile tipice în cascadă. @@IDENTITY nu pot fi folosite, iar conflictele simultane vor apărea atunci când 1W este pe mai multe rânduri pe mașini CII850, 256M SD. Pe P42.8C și 512M DDR, există un conflict simultan când există doar peste 6000 de linii.

2.SCOPE_IDENTITY() este absolut fiabil și poate fi folosit în procesul de stocare, chiar și trigger-urile nu trebuie construite și nu există conflicte simultane

SELECT IDENT_CURRENT('TableName') - returnează ultima valoare de etichetă generată în tabelul specificat

SELECT IDENT_INCR('TableName') - returnează valoarea de increment a câmpului marcat pentru tabelul specificat

SELECT IDENT_SEED('TableName') - returnează valoarea seed-ului câmpului marcat din tabelul specificat

Returnează numărul automat al ultimei înregistrări inserate

SELECT IDENT_CURRENT('NumeTabel')

Întoarce-te la următorul număr automat:

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

SELECT @@IDENTITY - Returnează ultima valoare marcată care a fost generată în toate tabelele din sesiunea curentă








Precedent:SQLServer implementează metoda universală de divizare a șirurilor
Următor:Distribuie un artefact util de căutare
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com