Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12402|Yanıt: 3

[Kaynak] SQL Server veritabanında kendi kendine büyüyen ID sütununun çalışma yöntemini güncelleyin

[Bağlantıyı kopyala]
Yayınlandı 23.08.2018 12:20:44 | | | |
Günlük SQL Server geliştirmesinde, Identity tipinin kimlik sütunu genellikle bir tablo yapısının kendi kendine büyüyen sayısı olarak kullanılır. Örneğin, makale numarası, kayıt seri numarası vb. Kendi kendine büyüyen tanımlanmış sütunlara yapılan referanslar, veritabanı programlarının geliştirilmesini büyük ölçüde kolaylaştırır, ancak bazen bu inatçı alan tipi de bazı sorunlara yol açabilir.

1. Tanımlama sütununun alan değerlerini değiştirin:

Bazen, bir fonksiyonu uygulamak için, Identity tipindeki bir alanın değerini değiştirmek gerekir, ancak bu işlem kimlik sütununun türü nedeniyle varsayılan olarak izin verilmez. Örneğin, veritabanına normal şekilde eklenen 5 veri parçası varsa ve 2 veri bu sırada silinirse, veri tekrar eklenirse, kendi kendine büyüyen tanımlama sütununa otomatik olarak 6 değeri atanır, ancak veri ekerken 3 değeri vermek isterseniz, varsayılan olarak izin verilmez. Bu alanın değerini değiştirmek istiyorsanız, tanımlama alanının değerinin eklenmesini tamamen kontrol edebilirsiniz, hâlâ yöntemler var, haha.

SET IDENTITY_INSERT /[TABLE/] [AÇIK| KAPALI
Yukarıdaki ifadeyi kullanarak, bir tablodaki kendi kendine büyüyen tanımlayıcı sütununun otomatik olarak büyüyüp büyümeyeceğini, yani bir kayıt eklerken tanımlayıcı sütun alanının değerini manuel olarak belirtmenize izin verilip verilmediğini kolayca kontrol edebilirsiniz. Eğer on olarak belirtilirse, eklerken tanımlayıcı sütun alanının değerini belirtebilirsiniz, bu da atanan değeri otomatik olarak büyütmez. Tabii ki, eğer bu ifadeyi kullanırsanız, varsayılan duruma geçişi kapatmak için bu ifadeyi kullanmanız gerekir, aksi takdirde alan bir dahaki veri eklediğinizde atanan değeri otomatik olarak artırmaz.

2. Tanımlama sütununun alan değerini sıfırlayın:

Veri kaydının bir kısmı silindiğinde, yeni veri kaydı daha sonra eklendiğinde, tanımlama sütununun değeri uzun bir boşta aralık olur ve bu çok rahatsız edici görünür. Tablodaki tüm kayıtları silseniz bile, kimlik sütununun değeri otomatik olarak artmaya devam eder ve sıfırdan büyümek yerine sonsuza dek artacaktır. Kendi kendine büyüyen tarlanın tohum değeri aşağıdaki ifadeyle sıfırlanabilir:

DBCC CHECKIDENT(TABLE, [RESEED| NORESEED], [1])
Yukarıdaki ifade, belirtilen tablonun tohum değerinin 1'e sıfırlanmasını sağlar. Ancak, tohumu 1'e sıfırlamak istemiyorsanız, üçüncü parametreyi kullanmak istediğiniz tohum değeriyle değiştirebilirsiniz. Mevcut tohumu bilmek istiyorsanız, tanımlanan tohumu sıfırlamak yerine NORESSEED kullanmanız gerekir.




Önceki:SQL Server 2012 otomatik büyütme sütunları ve değer sıçraması sorunları var
Önümüzdeki:Windows, Redis servisini başlatamıyor, hata 1067: Süreç beklenmedik şekilde sonlanıyor.
 Ev sahibi| Yayınlandı 23.08.2018 12:57:08 |
1. Tablodaki tüm veriler silindiğinde, otomatik olarak sıfıra yükselir. ( tablo Adı kısaltma )

2. Tablodaki verileri silmeyin, otomatik büyümenin değerini doğrudan sıfırlayın. ( DBCC CHECKIDENT ('TableName', RESEED, 0)
 Ev sahibi| Yayınlandı 23.08.2018 13:01:32 |
 Ev sahibi| Yayınlandı 13.02.2019 09:59:15 |
Kendi kendine artan sütunların mevcut değerlerini bir tabloda görüntüleyin:
    DBCC CHECKIDENT (TableName)

Bir tablodaki kendi kendine artan bir sütunun mevcut değerini değiştirin:
    DBCC CHECKIDENT (TableName, RESEED, value)
    RESSEED bir sütun adı değildir, sabit bir şekilde yazılır.


Örneğin, Division tablosunda kendi kendine artan sütunun mevcut değerini 30'a değiştirmek istersem, aşağıdaki komutu kullanabilirim
DBCC CHECKIDENT (Bölüm, YENİDEN SEYRİNME, 30)
Sonra kullan
DBCC CHECKIDENT (Bölüm)
Mevcut değerin 30 olduğunu görebilirsiniz
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com