İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. SDN Programlama Kafe
SDN Programlama Kafe

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

Peter11.03.20126 cevap5.926 görüntüleme
2008'den beri8.051 mesaj
#1
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.
Cevaplar
2011'den beri224 mesaj
#2
İ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.
2007'den beri17 bin mesaj
#3
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 Konuyu açan
2008'den beri8.051 mesaj
#4
xlorxlarge dedi: ↑
İ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ı.
cgrszone dedi: ↑
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 :)
2007'den beri17 bin mesaj
#5
Peter dedi: ↑
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....
2012'den beri250 mesaj
#6
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.
2012'den beri400 mesaj
#7
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 ;)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.