MsSql – Identity Kolon Değerini Değiştirmek 1

Bildiğiniz üzere Sql üzerinde primary key olarak belirlediğimiz kolonları büyük çoğunlukla Identity olarak otomatik artacak şekilde belirliyoruz. Bu tablolar üzerinde yaptığımız her bir insert işlemiyle bu identity değer artmakta olup, her ne kadar bu tablodaki veriler silinse bile identity değer kaldığı yerden devam etmektedir.

Bu nokta bazen bütün tablo içeriğini sildiğimiz halde Identity değerin 0’dan başlamasını düşündüğümüz halde en son kaldığı değerden devam etmekte. Bu durumu düzeltmek için 2 durum mevcut.

Eğer tablo içerisindeki veriyi tamamen silmek istersek

Truncate table dbo.Customers

kodunu kullanarak veya

DBCC CHECKIDENT('dbo.Test',RESEED, 0);

Identity değerin 0 dan başlamasını sağlayabiliriz.
Eğer tabloyu tamamen silmediysek ve son sildiğimiz değerden devam etmek istiyorsak 2. seçeneği kullanarak kaldığımız yerden devam edebiliriz.

DBCC CHECKIDENT('dbo.Test',RESEED, 10);

Şimdi size ufak bir örnek ile anlattıklarımı göstereyim.

-- Küçük bir customers tablosu oluşturalım
create table dbo.Customers
(
ID int not null IDENTITY(1,1),
Name varchar(50) not null,
Surname varchar(50) not null
)

-- 4 adet Customer ekleyelim tablomuza.
insert into dbo.Customers values ('Hasan','Tatarlı'),
('Ahmet','Kılıç'),
('Ali','Özcan'),
('Mehmet','Yılmaz')

-- Son durumda tablomuzu kontrol edelim
Select * From dbo.Customers

-- Identity Value aşağıdaki kodun sonucunda 4 olarak döndüğünü görüyor.
DBCC CHECKIDENT('dbo.Customers',NORESEED)
--Checking identity information: current identity value '4', current column value '4'.

-- Şimdi bütün tablomuzu delete edelim ve Identity değeri tekrar kontrol edelim.
Delete From dbo.Customers
--Tekrar kontrol
DBCC CHECKIDENT('dbo.Customers',NORESEED)
--Checking identity information: current identity value '4', current column value '4'.

--Yukarıdaki sonuçta görüldüğü gibi yeni bir kayıt eklememiz durumunda Identity Value 5 değerini alacak.
insert into dbo.Customers values ('Hasan','Tatarlı')
GO
Select * from dbo.Customers

--Gördüğünüz gibi ID alanı 5 olarak geldi.
DBCC CHECKIDENT('dbo.Customers',NORESEED);

--Şimdi bütün tablo ile beraber Identity değeri da sıfırlayalım.
Delete From dbo.Customers
--Tekrar kontrol
DBCC CHECKIDENT('dbo.Customers',RESEED,0)
--Checking identity information: current identity value '5', current column value '0'.

-- Şimdi yeni bir kayıt ekleyip kontrol edelim.
insert into dbo.Customers values ('Hasan','Tatarlı')
GO
Select * from dbo.Customers
--Tekrar kontrol
DBCC CHECKIDENT('dbo.Customers',NORESEED)
--Checking identity information: current identity value '1', current column value '1'.

--Aynı Identity Değeri yeni bir kayıt eklemeden önce 10 dan başlayacak şekilde değiştirelim.
DBCC CHECKIDENT ('dbo.Customers', RESEED, 10)

insert into dbo.Customers values ('Hasan','Tatarlı')
--Checking identity information: current identity value '1', current column value '10'.

Select * from dbo.Customers

Umarım faydalı olmuştur.

İyi çalışmalar.

One comment on “MsSql – Identity Kolon Değerini Değiştirmek

  1. Pingback: Toplu CheckIdent işlemleri ← Hasan Tatarlı

Leave a Reply