LISÄÄ sarake, jossa on tunnistetietojoukko
SQL Serverissä on IDENTITY-ominaisuus, joka määrittää automaattisesti järjestysnumeron 1:stä tiettyyn sarakkeeseen, kun lisäät tietueen. Jos esimerkiksi määrität IDENTiteetin sarakkeeseen A ja lisäät 3 tietuetta, sarakkeeseen A lisätään automaattisesti arvot 1, 2 ja 3 siinä järjestyksessä, jossa ne lisättiin.
Vaikka käyttäisit INSERT-lausetta, arvo määritetään automaattisesti, joten arvoa ei tarvitse erikseen asettaa, mutta mielestäni on tapauksia, joissa haluat asettaa arvon nimenomaisesti, koska sitä käytetään viiteavaimeen jne.
Oletetaan esimerkiksi, että "ID" -sarakkeessa on taulukko, jonka "IDENTITY" -ominaisuus on määritetty kuvassa esitetyllä tavalla.
INSERT-lause, joka lisää arvon tähän taulukkoon, mukaan lukien TUNNUS-sarake, näyttää tältä:
insert into [テーブル名] ([ID], [Value]) values (1, 1)
Kuitenkin, kun yritän suorittaa sen, luulen, että seuraava virhe tulee näkyviin.
Msg 544, Taso 16, Osavaltio 1, Rivi 1 Kun IDENTITY_INSERT-asetuksena on OFF, eksplisiittisiä arvoja ei voi lisätä taulukon XXXXX tunnistetietosarakkeeseen.
Sarakkeille, joiden arvoksi on alun perin määritetty IDENTITY, oletetaan, että arvot on määritetty automaattisesti, joten arvoja ei voi määrittää eksplisiittisesti.
Jos haluat todella asettaa sen, sinun on asetettava "IDENTITY_INSERT" -asetukseksi "ON" virhesanomassa kuvatulla tavalla. Ota IDENTITY_INSERT käyttöön ennen LISÄÄMISTÄ ja palaa pois päältä, kun lisäys on valmis, kuten seuraavassa SQL:ssä:
set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;
-- 確認
select * from [テーブル名];
Voit nyt määrittää arvon eksplisiittisesti ja LISÄTÄ sen. INSERT-SELECT taulukoiden avulla on myös kelvollinen.
Sarakkeille, joilla on TUNNISTE, määritetään automaattisesti arvot 1: stä, mutta jos määrität arvot eksplisiittisesti edellä kuvatulla tavalla, saatat miettiä, mikä numero määritetään seuraavaksi. Tässä tapauksessa seuraava määritetty arvo määritetään taulukon suurimman arvonlisäyksen jälkeisestä numerosta, joten uutta tietuetta lisättäessä ei ole kaksoisarvoa. (On kuitenkin poikkeuksia, jotka johtuvat vammaisuudesta jne.)