SQL Server'de Primary Key'i Kaydırma ?

  • Konuyu başlatan Konuyu başlatan Peter
  • Başlangıç tarihi Başlangıç tarihi

Peter

Dekan
Emektar
Katılım
16 Ağustos 2008
Mesajlar
8,051
Reaksiyon puanı
88
Puanları
0
Merhabalar arkadaşlar,sql serverde primary key kullanacağım..id numarasını nasıl otomatikleştirebilirim ?
örneğin 30 kaydım var.
15. kaydı sildim.bu 15. kaydın yerine bir sonrakinin gelmesini nasıl sağlayabilirim ? yani ben aradan kayıt sildiğim zaman sonrakiler birer tane yukarı kaysın istiyorum.bi türlü beceremedim.
Mesaj yazanlara çok teşekkürler.
Edit ^^;
dil olarak C# kullanıyorum.
 

xlorxlarge

Asistan
Katılım
28 Şubat 2011
Mesajlar
224
Reaksiyon puanı
1
Puanları
18
İd numarasını column propertiesden identity specification'u yes yaparak otomatik artırabilirsin. Kaydı sildikten sonra benim bildiğim otomatik diğer kayıt geliyor diye biliyorum ama.
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
ID alanını primary key olarak işaretlersen zaten auto increment özelliği de kazanacaktır. Eğer ki kazanmıyorsa da auto increment özelliğini tablo şeklini düzenlerken aktif etmen gerekir. Tabi bu dediklerimi tablo boş iken yapman gerekiyor. İçinde veri olan tablonun şeklini düzenlemene izin vermez...
 

Peter

Dekan
Emektar
Katılım
16 Ağustos 2008
Mesajlar
8,051
Reaksiyon puanı
88
Puanları
0
İd numarasını column propertiesden identity specification'u yes yaparak otomatik artırabilirsin. Kaydı sildikten sonra benim bildiğim otomatik diğer kayıt geliyor diye biliyorum ama.
identity specification olayı tamam zaten :) benim istediğim kaydı silince id numaralarının kaymasıydı.
ID alanını primary key olarak işaretlersen zaten auto increment özelliği de kazanacaktır. Eğer ki kazanmıyorsa da auto increment özelliğini tablo şeklini düzenlerken aktif etmen gerekir. Tabi bu dediklerimi tablo boş iken yapman gerekiyor. İçinde veri olan tablonun şeklini düzenlemene izin vermez...
auto increment management studio'da nasıl aktif ediliyor :)
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
auto increment management studio'da nasıl aktif ediliyor :)

Yapmak istediğin veri tabanında kayıt olmayacak bir kere. İlk defa tabloyu yaratıyorsan veya içinde veri yoksa tablo biçimini düzenlerken zaten kolonlara atanacak index'i seçebileceğini göreceksin....
 

kizanlik

Asistan
Katılım
25 Mart 2012
Mesajlar
250
Reaksiyon puanı
0
Puanları
0
Konu hortlayacak ama SQL server ile çalışmaya yeni başlayanların sıkça sorduğu bir soru bu.

ID oluşturmanın en temel amacı, tablolar arasında ilişki kurmaktır. Örnek:

Şehir tablosu oluşturulur.
Adres tablosu oluşturulur.
Sipariş tablosu oluşturulur.

Sipariş ve adres tablolarının, şehir alanı, ID üzerinden ŞEHİRLER tablosuna bağlanır.

- Her tabloda şehir bilgisi uzun uzun girilmesine gerek kalmaz
- ANKKARA, ANKRA, ANKARRA gibi hatalı girişlerin önüne geçilir

Tablolar tasarlanırken

- Ana tabloda, ID otomatik artacak şekilde
- Alt tabloda ise otomatik OLMAYACAK şekilde

ayarlanır. Veriler girildikçe, IDler, alt tablolara aktarılmaya başlanır.

Bu aktarım; bazen otomatik bazen manuel yapılır (tasarımcının tercihi).

Ana tabloda, ID değişikliği yapılırsa alt tablolarda da değişiklik yapılması zorunludur. Aksi durumda adres bilgileri şaşar.

Bunu engellemek için de, oluşturulmuş tablo üzerinde ID değişikliğine izin verilmez.
 

SerdarGokcen

Asistan
Katılım
7 Nisan 2012
Mesajlar
400
Reaksiyon puanı
3
Puanları
0
Otomatik artan ID sütununun Otomatik artmasını devre dışı bırakman gerek silerken. Yoksa 15. kayıt silinirse 15 den başlamaz 16 dan başlar.

bunu aşmanın iki yolu var ya silerken yukarıda yazdığımı yapacaksın yada trigger kullanacaksın. trigger daha sağlıklıdır.

birde tablolar arası ilişki kuracaksan foreign key tanımlaman gerekir ki ilişki bozulmasın. mesela 15 nolu kaydı sildiğinde ona bağlı kayıtlar da silinmeli. Yoksa çöp veri dediğimiz gereksiz veriler kalacaktır.

http://www.csharpnedir.com/forum2/forum_posts.asp?TID=31986 şu linkte 2. mesajımda açıkladım durumu. [MENTION=257183]kizanlik[/MENTION] konuyu hortlattın ama bilgi bilgidir ;)
 
Üst