IDENTITY ALANI SIFIRLAMA VEYA FARKLI BİR DEĞERE SET ETME

Bildiğiniz üzere Identity alanlar genelde tablomuzda Primary Key olarak atadığımız ve her kayıt Insert edildiğinde istediğimiz sayıda artan değere sahip alanlardır.

Test tablomuzu oluşturalım ;

CREATE TABLE Personel
    (
      Id INT IDENTITY(1, 1) ,
      Name VARCHAR(50) ,
      SurName VARCHAR(75) ,
      PhoneNumber CHAR(10)
    );

 

Test tablomuza veri basalım ,

INSERT  INTO Personel
VALUES  ( 'Yusuf', 'KAHVECİ', '0500999000' ),
        ( 'Yaşar', 'KAHVECİ', '0500000000' ),
        ( 'Ufuk', 'Sanchez', '1855223300' );

Şimdi ise tablomuza SELECT işlemi uygulayarak veirlerimizin doğruluğunu test edelim;

SELECT  *
FROM    Personel;

 

Bu sonuca göre ;

1

Gördüğünüz üzere , Id alanımızı Idenitity ve birer birer artacak şekilde ayarlamıştık ve her kayıt eklediğimizde otomatik olarak arttığını görmekteyiz.

Peki ben şimdi tablomdan bir kayıt silip tekrar eklemeye çalışırsam tablomda ki Id kolonum da bir değişiklik olur mu ?

-- Tablomdan bir kayıt sildim
DELETE  FROM Personel
WHERE   PhoneNumber = '1855223300';

-- Sildiğim kayıdı tekrar ekledim
INSERT  INTO Personel
VALUES  ( 'Ufuk', 'Sanchez', '1855223300' );

 

Yukarıda ki scriptleri kullanarak işlemimi gerçekleştirdim ve şimdi tablomuza SELECT çekerek son durumunu gözlemleyelim .

2

Tablomuzda Id kolonumuza baktığımızda sıralama 1,2 ve 4 olarak değişmiştir. Bunun nedeni ; tablomuzda ki verileri silsek bile eklenen kayıdın Id değeri son Id değerinden sonraki değer olacaktır.

Yani bizim örneğimize göre son Id değeri  3 ‘tü ve biz Id değeri 3 olan kayıdı sildik fakat tablo üzerinde son Id değeri 3 olduğundan yeni eklediğimiz kayıt 4 olarak atandı.

Peki biz Id değerimizin kaldığı yerden devam etmesini istiyorsak ne yapmalıyız ?

DBCC CHECKIDENT (‘Tablo Adı’,RESEED, Başlatılacak Sayı)

Yukarıda aktardığım komut ile Identity alanlarımızı istediğimiz sayıya set ederek işlemlerimizi gerçekleştirebiliriz.

Bizim örneğimize dönecek olursak  ;

Eğer Id ‘si 4 olan kayıt değilde yapıyı bozmak istemyorsak ve bu kayıdın Id si eklendiğinde sıradan devam etsin yani 3 olarak atanacaksa yukarıda ki scripti kullanarak Identity değerimizi set edebiliyoruz.

Adım 1 : Id si 4 olan kayıdı siliyoruz.

-- Id si 4 olan kayıdı siliyoruz...
DELETE  FROM Personel
WHERE   Id = 4;

Adım 2 : Identity alanımızı 3 ten başlayacak şekilde set ediyoruz..

-- Identity alanı istediğimiz sayıya set etmek.
DBCC CHECKIDENT (Personel, RESEED, 2);

Adım 3 :Kayıdımızı ekliyoruz.

--  Kayıdımızı ekliyoruz...
INSERT  INTO Personel
VALUES  ( 'Ufuk', 'Sanchez', '1855223300' );

Adım 4: Bu adımda ise tablomuzun son haline bakıyoruz..

--Tablomuzu kontrol edelim ...
Select * from Personel

3

Gördüğünüz üzere Id değerimiz sırasıyla gitmektedir.

DBCC  CHECKIDENT  komutu  ile Identity alanlarımızın kontrolünü sağlayabiliriz.

Tablomuzun hangi ıdentity degree sahip olduğunu aşağıda ki komut ile görebiliriz.

DBCC CHECKIDENT ('Personel', NORESEED);
GO

 

Bu komutun sonucunda Mesaj bölümünde aşağıda ki gibi bir uyarı gelmektedir.

Checking identity information: current identity value ‘3’, current column value ‘3’.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

 

Identity değerimizin 3 olduğunu bu şekilde görmekteyiz.

İyi Çalışmalar.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *