none
ID si Oto Artan Bir Tabloda Silinen Bir Veri Olduğunda Boş Kalan ID Değerine Göre Tekrar Sıralama Nasıl Yapılır? RRS feed

  • Soru

  • Öncelikle başlıkta soruyu tam olarak anlatamamış olabilirm k.bakmayın.

    Sorunum ;

    Veri tabanında ogrenciID diye bir satırım var ve otomatik artıyor.1 den 5 e kadar verim var diyelim.

    Ve 3. veriyi sildim diyelim bu sefer ID sıralaması bozuluyor.  (Örn : 1,2,4,5)

    Bunu (Örn : 1,2,3,4) gibi yapma şansım yokmu?

    19 Aralık 2016 Pazartesi 17:37

Yanıtlar

  • Tablonuza sıra diye bir alan ekleyin. Id'yi iç işlerde kullanın Sırayı gösterin. Her silme işleminden sonra cihan beyin yazdığı kodu Update olarak düzenleyip sıra alanındaki değerleri sildiğiniz kayıttan itibaren düzenleyin ya da sadece son kaydın sıra'sına sildiğiniz kaydın sıra numarasını verin.

    Diğer yandan Illa ID alanı olsun diyorsanız. Tablonuz diğer tablolarla ilişkili ise kaç tablo ile ilişkili olduğuna bağlı olarak biraz zahmetli olur. Ama yeni bir Id alan ekleyip gerekli updateleri yapıp eski ıd alanını silip relationları yeniden tanımlayarak yapabilirsiniz.

    Ama ID alanı eğer SQL'in Identity alanı ise MS bunun tekilliğini veya sırasal olacağını garanti etmiyor. Bu alan aslında kullanıcıya göstermek için değildir. 


    http://pgnchess.com
    http://dergikapaklari.com

    • Yanıt Olarak İşaretleyen İbrahim Çakal 19 Aralık 2016 Pazartesi 21:47
    19 Aralık 2016 Pazartesi 19:02

Tüm Yanıtlar

  • Select ROW_NUMBER() OVER(ORDER BY Id ASC) AS SIRA,* From Tablo


    19 Aralık 2016 Pazartesi 17:44
  • Bunu sadece seç komutunda yazıcam?Yani veritabanındakileri datagridview yazdırırken mi ? yoksa ekleme yaparken yada güncelleme silme işlemi yaparkende yazacakmıyım ? 
    19 Aralık 2016 Pazartesi 17:49
  • Merhaba,

    İbrahim bey bunu neden yapmak istediğinizi bir kenara bırakıyorum.

    Yapabileceğinizi çok düşünmüyorum yani idleri yeniden sıralı olarak güncelleme işini... 

    Ancak bir anlığına yapabildiğinizi düşünüyorum ve ilişkisel tablolarda bu güncelleme işini nasıl yapacaksınız çok merak ediyorum.

    Amacınız bir şeyleri sıralı olarak göstermek ise id sizin için bir seçenek gibi görünebilir ancak

    id'nin asıl amacı kayıtlara benzersiz değerler atamaktır (illaki int olacak değil)

    19 Aralık 2016 Pazartesi 18:47
  • Tablonuza sıra diye bir alan ekleyin. Id'yi iç işlerde kullanın Sırayı gösterin. Her silme işleminden sonra cihan beyin yazdığı kodu Update olarak düzenleyip sıra alanındaki değerleri sildiğiniz kayıttan itibaren düzenleyin ya da sadece son kaydın sıra'sına sildiğiniz kaydın sıra numarasını verin.

    Diğer yandan Illa ID alanı olsun diyorsanız. Tablonuz diğer tablolarla ilişkili ise kaç tablo ile ilişkili olduğuna bağlı olarak biraz zahmetli olur. Ama yeni bir Id alan ekleyip gerekli updateleri yapıp eski ıd alanını silip relationları yeniden tanımlayarak yapabilirsiniz.

    Ama ID alanı eğer SQL'in Identity alanı ise MS bunun tekilliğini veya sırasal olacağını garanti etmiyor. Bu alan aslında kullanıcıya göstermek için değildir. 


    http://pgnchess.com
    http://dergikapaklari.com

    • Yanıt Olarak İşaretleyen İbrahim Çakal 19 Aralık 2016 Pazartesi 21:47
    19 Aralık 2016 Pazartesi 19:02
  • SET @sira:=0;
    UPDATE <tablo_adi> SET <kolon_adi> = @sira:=@sira+1;

    ya da tek satırda yapmak istersen

    UPDATE <tablo_adi> JOIN (SELECT @sira:= 0) r SET <kolon_adi> = @sira:=@sira+1;

    17 Ekim 2019 Perşembe 00:02