KOLONNAS IEVIETOŠANA ar kopu IDENTITY

Lapa atjaunota :
Lapas izveides datums :

SQL Server ir rekvizīts "IDENTITY", kas automātiski iestata kārtas numuru no 1 uz noteiktu kolonnu, kad pievienojat ierakstu. Piemēram, ja kolonnā A iestatāt IDENTITY un pievienojat 3 ierakstus, kolonna A tiek automātiski aizpildīta ar vērtībām 1, 2 un 3 tādā secībā, kādā tās pievienojāt.

Pat ja izmantojat priekšrakstu INSERT, vērtība tiek iestatīta automātiski, tāpēc nav nepieciešams skaidri iestatīt vērtību, bet es domāju, ka ir gadījumi, kad vēlaties skaidri iestatīt vērtību, jo tā tiek izmantota ārējai atslēgai utt.

Piemēram, pieņemsim, ka kolonnā "ID" ir tabula ar rekvizītu "IDENTITĀTE", kā parādīts attēlā.

Priekšraksts INSERT, kas ievieto vērtību šajā tabulā, ieskaitot id kolonnu, izskatās šādi:

insert into [テーブル名] ([ID], [Value]) values (1, 1)

Tomēr, mēģinot to palaist, es domāju, ka parādīsies šāda kļūda.

MSG 544, 16. līmenis, 1. valsts, 1. līnija Ja IDENTITY_INSERT ir iestatīts uz IZSLĒGTS, tabulas "XXXXX" identitātes slejā nevar ievietot skaidras vērtības.

Tiek pieņemts, ka kolonnām, kas sākotnēji ir iestatītas uz IDENTITY, vērtības tiek iestatītas automātiski, tāpēc vērtības nevar skaidri iestatīt.

Ja patiešām vēlaties to iestatīt, jums jāiestata "IDENTITY_INSERT" uz "IESLĒGTS", kā aprakstīts kļūdas ziņojumā. Pirms IEVIETOŠANAS ieslēdziet IDENTITY_INSERT un, kad ievietošana ir pabeigta, atgriezieties izslēgtā stāvoklī, kā tas ir šajā SQL:

set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;

-- 確認
select * from [テーブル名];

Tagad varat skaidri iestatīt vērtību un IEVIETOT to. Insert-SELECT, izmantojot tabulas, arī ir derīgs.

Kolonnām ar IDENTITY automātiski tiek piešķirtas vērtības no 1, bet, ja skaidri iestatāt iepriekš aprakstītās vērtības, iespējams, rodas jautājums, kāds numurs tiks piešķirts tālāk. Šajā gadījumā nākamā piešķirtā vērtība tiek piešķirta no numura pēc lielākās tabulas pievienotās vērtības, tāpēc, ievietojot jaunu ierakstu, nav vērtības dublikāta. (Tomēr ir izņēmumi invaliditātes dēļ utt.)