KİMLİK kümesine sahip bir sütun INSERT

Sayfa güncel :
Sayfa oluşturma tarihi :

SQL Server, bir kayıt eklediğinizde sıralı sayıyı otomatik olarak 1'den belirli bir sütuna ayarlayan bir "IDENTITY" özelliğine sahiptir. Örneğin, A sütununda KİMLİK değerini ayarlarsanız ve 3 kayıt eklerseniz, A sütunu bunları eklediğiniz sırayla otomatik olarak 1, 2 ve 3 değerleriyle doldurulur.

Bir INSERT deyimi kullansanız bile, değer otomatik olarak ayarlanır, bu nedenle değeri açıkça ayarlamanıza gerek yoktur, ancak yabancı bir anahtar vb. İçin kullanıldığı için değeri açıkça ayarlamak istediğiniz durumlar olduğunu düşünüyorum.

Örnek olarak, şekilde gösterildiği gibi "ID" sütununda "IDENTITY" özelliğinin ayarlandığı bir tablo olduğunu varsayalım.

Kimlik sütunu da dahil olmak üzere bu tabloya bir değer ekleyen bir INSERT deyimi şöyle görünür:

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

Ancak, çalıştırmayı denediğimde, aşağıdaki hatanın görüneceğini düşünüyorum.

Msg 544, düzey 16, durum 1, satır 1 IDENTITY_INSERT KAPALI olarak ayarlandığında, 'XXXXX' tablosunun kimlik sütununa açık değerler eklenemez.

Başlangıçta KİMLİK olarak ayarlanan sütunların değerlerinin otomatik olarak ayarlandığı varsayılır, bu nedenle değerleri açıkça ayarlayamazsınız.

Gerçekten ayarlamak istiyorsanız, hata iletisinde açıklandığı gibi "IDENTITY_INSERT" ı "AÇIK" olarak ayarlamanız gerekir. Eklemeden önce AÇIK IDENTITY_INSERT ve aşağıdaki SQL'de olduğu gibi ekleme tamamlandığında KAPALI konumuna geri dönün:

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

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

Artık değeri açıkça ayarlayabilir ve EKLEYİN. Tabloları kullanarak INSERT-SELECT de geçerlidir.

KİMLİĞİ olan sütunlara otomatik olarak 1'den değerler atanır, ancak değerleri yukarıda açıklandığı gibi açıkça ayarlarsanız, bir sonraki sayının hangi numaraya atanacağını merak ediyor olabilirsiniz. Bu durumda, atanan bir sonraki değer, tabloya eklenen en yüksek değerden sonraki sayıdan atanır, böylece yeni bir kayıt eklendiğinde yinelenen değer olmaz. (Ancak, engellilik vb. nedenlerle istisnalar vardır.)