P
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.
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.
S
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.
kizanlik konuyu hortlattın ama bilgi bilgidir ;)