Kin, IDENTITY değerini nasıl sıfırlayabileceğinizi gösterdi, ancak tüm verileri gerçekten kaldırdığınızda bir geliştirme ortamının dışında bunu neden yapmanız gerekiyor?
Umarım üretim yaparken bitişik bir KİMLİK değerleri dizisi sürdürmek istemezsiniz. Ve umarım IDENTITY değerlerini kodlamak için kodunuzu gerçekten yazmıyorsunuzdur. Bunlar anlamlı kimlik değerleri ise, IDENTITY özelliğini kullanmayı bırakmalısınız.
Bunun olmasını engelleyecek birkaç şey var:
- bir işlem sırasında bir KİMLİK değeri atanırsa ve işlem geri alınırsa, değer "geri verilmez" ve sonraki değer hiç kullanılmamış olan + 1 olur.
- bir satır daha sonra silinirse, IDENTITY boşlukları doldurmak için hiçbir zaman geri gelmez.
- SQL Server 2012'de,
SQL Server 2014 hiçbir zaman düzeltilmeyene kadar (belgelenmemiş ve çok pahalı bir izleme bayrağı kullanmazsanız) düzeltilmeyecek etkin bir hata var ve yeniden başlatmanın KİMLİK sütununuzdan 1000 değeri atar . Connect'teki hata, bunun Kullanılabilirlik Gruplarını içeren yük devretme olaylarıyla sınırlı olduğunu, ancak hatanın bundan daha geniş olduğunu garanti edebilirim.
Kısacası, boşlukları önemsiyorsanız veya bu değerlere özel bir anlam vermek istiyorsanız, KİMLİK kullanmayı bırakın. Tabloyu bırakın ve yeniden oluşturun ve değerleri silmeniz ve yeniden doldurmanız gerektiğinde, bir güncelleme gerçekleştirin veya bu sütun için sabit kodlanmış değerlere sahip bir ekleme yapın.
Bir kenara, birincil anahtar ve kimlik aynı şey değildir. Bir kimlik sütunu, açıkça bu şekilde tanımlamadığınız sürece birincil anahtar değildir ve kesinlikle bir kimlik sütunu olmayan bir birincil anahtarınız olabilir.