Identitate (proprietate) (transact-sql)

Coloanele de identificare pot fi folosite pentru a genera valori cheie. Proprietatea identificatorilor coloanelor garantează următoarele.

Fiecare nouă valoare va fi generată pe baza argumentelor actuale de însămânțare și incrementare.





Fiecare nouă valoare pentru o anumită tranzacție va fi diferită de celelalte tranzacții paralele pentru tabel.

Proprietatea ID-ul coloanei nu garantează următoarele.

Unicitatea valorii - unicitatea ar trebui să fie furnizată prin utilizarea constrângerii PRIMARY KEY sau UNIQUE sau indice UNIQUE.







Valorile secvențiale din cadrul tranzacției - când se introduce o tranzacție cu mai multe rânduri, nu se garantează că vor fi atribuite valori succesive. Acest lucru se datorează faptului că alte operații de inserare paralelă pot fi efectuate în tabel. Dacă valorile trebuie să fie consecvente, atunci tranzacția trebuie să utilizeze o blocare exclusivă pe masă sau nivelul de izolare SERIALIZABLE.

Valorile succesive după repornirea serverului sau alte erori - SQL Server poate stoca valorile ID în cache pentru înaltă performanță, iar unele dintre valorile atribuite vor fi pierdute atunci când eșec sau de baze de date server este repornit. Acest lucru poate cauza omisiuni în valorile identificatorului când sunt lipite. Dacă nu sunt permise omisiuni, aplicația trebuie să utilizeze propriul mecanism pentru a crea valori-cheie. Utilizarea unui generator de secvențe cu parametrul NOCACHE poate duce la limitarea decalajelor în tranzacțiile neconfirmate.

Valorile reutilizabile - proprietățile identificatorilor create de o proprietate specifică a identificatorului cu argumentele specificate pentru semințe și creșteri nu sunt refolosite de subsistem. Dacă instrucțiunea de inserare specificată nu reușește cu o eroare sau este derulată înapoi, valorile identificatorului utilizate nu vor fi recreate. Acest lucru poate duce la embleme atunci când se creează valori de identificare ulterioare.

Aceste restricții au fost create intenționat și concepute pentru a îmbunătăți performanța, deoarece sunt permise în multe situații tipice. Dacă nu puteți utiliza valori de identificare din cauza acestor restricții, este recomandat să creați un tabel separat care să conțină valoarea curentă, controlul accesului la care și alocarea numărului vor fi efectuate de către aplicație.

Pentru fiecare tabel, puteți crea o singură coloană de identificatori.

În tabele optimizate pentru memorie, valoarea inițială și valoarea incrementală trebuie să fie setate la 1.1. O indicație pentru valoarea inițială sau valoarea incrementală pentru un alt număr decât 1 va duce la următoarea eroare. Utilizarea unei valori inițiale și a unei valori incrementale, altele decât 1, nu este acceptată în tabele optimizate.







Articole similare

Trimiteți-le prietenilor: