Bu makalede identity özelliği aktif olan bir tablonun identity özelliğini pasif ederek veri aktarım işlemini yapmış olacağız. Bu yapıyı Canlı sistemde partition makalesinde uygulamalı bir şekilde bahsetmiştik.
Identity column bir tablodaki bir kolonda otomatik artan değerler anlamına gelir. Bir tablonun design ekranında ilgili kolun üzerinde tıkladıktan sonra identity specification kısmından ilgili değer Yes yapılıp identity kolunun nasıl arttırılacağını belirtebiliriz.
Şunu da belirtmek gerekir. Eğer bir kolun içerisinde verilerle birlikte identity yapısı oluşturamayız. İdentity yapının oluşması için birinci adım generate script ile yeni bir tablo oluşturulup verilerin yeni tabloya insert edilmesi gerekmektedir. İkinci bir adım olarak bir kolun eklenir. Oluşturulduktan sonra diğer kolun silinmektedir.

Şimdi identity özelliği aktif olan bir tabloya manuel bir değer insert edeceğimiz zaman hata mesajıyla karşılaşırız. Çünkü identity özelliği aktif olan bir kolun kod bloğunda belirtilmez. Aşağıdaki resimdeki gibi identity özelliği aktif olan bir tabloya kayıt ekliyoruz.

Hata mesajı:
Cannot insert explicit value for identity column in table ‘TARIH’ when IDENTITY_INSERT is set to OFF.
İnsert into…. Select ..from komutunda, identity olan kolununda belirtilmesi gerekmektedir. Belirtildikten sonra yukarıdaki hata mesajını insert into komutuda verecektir.
Mevcut IDENTITY değerini görmek için aşağıdaki komut kullanılır. Bir başka son satır değerini görmek için Max(column) ifadesi ile öğrenilebilir.
DBCC CHECKIDENT ('[Person].[Address]', NORESEED);

Eğer IDENTITY sütununun saymaya başlayacağı değeri değiştirmek istersen:
-- Otomatik sayılamaya devam edecek değeri ayarlamak için:
DBCC CHECKIDENT ('TabloAdi', RESEED, 99);
Bu ifade ile bir sonraki kayıt değerinin 100 olacağını belirtiyoruz.
Yukarıdaki hata mesajını almamak için aşağıdaki komutların insert cümlesinden önce ve sonra yazılması gerekmektedir. Bu ifade ile en son id değerimizden sonraki id değeri alınarak tablo eklenir.
set identity_insert TARIH on
insert into TARIH(id,tarih) values(115,'2024-10-06 18:30:49.800')
set identity_insert [a].[dbo].TARIH off

Manuel bir şekilde insert işleminin gerçekleştiğini görmüş oluyoruz. Şimdi tekrardan tablomuza select çekip son değeri görelim.

Tablomuza normal değerler insert ettiğimizde kaydedilen kayıtların 115 den devam ettiğini görmüş olacağız.
insert into TARIH(tarih) values('2024-10-06 18:30:49.800')

Yukarıdaki örneklerde uygulamalı görmüş olduğumuz identity on-off ifadesinin bize sağlamış olduğu avantajları görmüş olduk.
Başka bir makalede görüşmek dileğiyle.
Onlar – “Emanetlerine İhanet Etmezler. ” Mu’minun / 8