TSQL - IDENTITY_INSERT Nedir?

T-SQL komutu olan IDENTITY_INSERT, veritabanına veri girişi yaparken identity olan kolona veri girebilmemizi sağlar.

Normal şartlarda tabloya veri eklerken, primary key olan bir alana (Genellikle ID alanlar) otomatik olarak değer atanır. Bu yüzden ID alanına veri girişi yapmak istersek aşağıdaki hatayı alacağız.

Örnek olarak Eğitmenlerin bulunduğu tbl_Egitmenler tablosu için veri girişi yapıyoruz.

INSERT INTO [dbo].[tbl_Egitmenler]
([EgitmenID],[Ad],[Soyad],[DogumTarihi],[Maas]) 
VALUES  
(13,'Mert','Metin','19931017',2500)

"Cannot insert explicit value for identity column in table 'tbl_Egitmenler' when IDENTITY_INSERT is set to OFF."

Hata bize tablonun IDENTITY_INSERT özellğinin ON olması gerektiğini belirtiyor.

Kodumuzu aşağıdaki gibi düzenlersek;

SET IDENTITY_INSERT tbl_Egitmenler ON

INSERT INTO [dbo].[tbl_Egitmenler]
([EgitmenID],[Ad],[Soyad],[DogumTarihi],[Maas]) 
VALUES  
(13,'Mert','Metin','19931017',2500)

SET IDENTITY_INSERT tbl_Egitmenler OFF

Kullanım: SET IDENTITY_INSERT tablo_adi ON/OFF

Yukarıdaki SQL sorgusunu çalıştırdığımız zaman ID alanına istediğimiz bir değeri girebiliriz. Bu sorgu, ilgili tablonun IDENTITY_INSERT özellğini ON kelimesyle açıp veriyi ekledikten sonra IDENTITY_INSERT özelliğini OFF kelimesiyle kapatır.

Önemli bir ayrıntıdan bahsedecek olursak IDENTITY_INSERT özelliği kapalı olduktan sonra ID değeri girmeden veri eklemek istersek en son ID değeri ne ise sonraki değerden eklemeye başlar.

Örneğin 13 olarak veri girişi yaptığımız ID değeri otomatik olarak 14 değerini ekler. Eklenecek değer 14'ten başlayarak devem edecektir.

Umarım faydalı olmuştur :)

Yorumlar