none
id ler şaşrmış, nasıl normale döndürebiliriz?

    Soru

  • bunun nasıl her seferinde 1 den başlamasını sağlayabilirz? var mı bir ayarı hem ssms2008 de hem de vs2010 üzerinden?

    bir de her zaman şunu yapıyor; veritabanında veri varken değişiklik yapmak istediğimde id ler şaşırıyor yani bir bakıyorsun 5 ten başlıyor, bu bir arıza a.k.a. bug değil mi? :)) nasıl giderebilirz?teşekkürler....


    I don't give a fuck anything...


    • Düzenleyen 14 Haziran 2012 Perşembe 21:43
    12 Haziran 2012 Salı 15:22

Yanıtlar

  • ContactID columnunda identity (otomatik artırım) özelliği kullandığın için böle oluyor... 26 numaralı kayıt da kalmışsın bir sonraki kayıtda atıyorum 27 gelicek ama 27 id sine sahip kayıdı sildiğinde Tablondaki sıralam 27 den sonra devam edicek yani bir sonraki kayıtın 28 numara olacak...

    Bunun nasıl her seferinde birden başlatırım sorusuna cevap olarak kullanabileceğin yöntem ContactID columndaki identity özelliğin kapatman ve Bu tabloya kayıt yaparken .. ilk önce Bu tablodaki maximum ID numarasını bulup şöyleki

    select MAX(o.OgrID) from OGRENCILER as o 

    sana maximum yani en yüksek ID numarasını verecektir... Kullandığın yazılım diline göre bu dönen değere +1 ekleyerek kendi identity ni yaratabilrisin. Bu şeklide farklı identity numaraları gözünü gönlünü rahatsız etmez


    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com

    • Yanıt Olarak İşaretleyen 12 Haziran 2012 Salı 17:14
    12 Haziran 2012 Salı 16:15
  • Pekela.. Her hangi bir tabloya kayıt yaparken kayıt numaralarının düzgün bir şekilde artışını sağlayabilmek için Primary Key olarak seçtiğin sütündaki Maximum değeri çekmen gerekecek bunu sql code parçacığı ile şu şeklide yapabilirsin

    select MAX(o.OgrenciID) from OGRENCILER 

    burda yaptığımız Öğrenciler tablosundaki PRIMARY KEY olan OgrenciID sütünundaki maximum yani en büyük değeri çekmek.. Bu sorgunun sonucu bize sadece  tek bir object değer döndürecektir... bunu bir method içine alırsak ki örnek olabilecek Sıradaki ÖğrenciId sini bana getirecek olan method aşağıdadır.

            public int SiradakiNoGetir()
            {
                SqlConnection cnn = new SqlConnection("Bağlantı cümleciği buraya gele");
                SqlCommand cmd = new SqlCommand("select MAX(o.OgrenciID) from OGRENCILER", cnn);
                cmd.Connection.Open();
                int sonID = (int)cmd.ExecuteScalar();
                cmd.Connection.Close();
    
                int siradakiNo = sonID + 1;
                return siradakiNo;
            }

    Umarım derdini anlamış ve Yardımcı olabilmişimdir.

    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com



    • Düzenleyen Exe.Cute 12 Haziran 2012 Salı 16:56
    • Yanıt Olarak İşaretleyen 12 Haziran 2012 Salı 17:15
    12 Haziran 2012 Salı 16:55

Tüm Yanıtlar

  • ID lerin her defasında farklı olması normaldir. Tahminime göre siz müşteri numarası, kayıt numarası vb. şeyler için sürekli artan bir sayıya ihtiyaç duyuyorsunuz. Bunun için veritabanında ayrı bir alan açıp oraya kaydettirmeniz lazım.
    12 Haziran 2012 Salı 15:27
  • Tabloya manuel kayıt atarken zorunlu alanı boş geçtiysen ve Enter basıp kaydetmeye çalıştıysan Identity Alan kendini kaçar kaçar artırıyorsan o kadar arttırmıştır fakat kayıt içeriye atılmamıştır sen bu işlemi bir çok kez tekrarlamışsın ama en sonunda doğru kayıtı atabilmişsin :)
    12 Haziran 2012 Salı 15:33
  • olaylar sizin hayallerinizdeki gibi olmadı maalesef :)) neyse doğrudan istediğim şeyi söyliyim, sürekli deneme yaptığımdan (insert update ve delete işlemlerini loclahosttaki tasarım üzerinden) haliyle 13 den sonra 26 ya gelmesi normaldir...ancak derdim bu değil...veritabanını oluşturduktan sonra geri dönüp bazı sütunlar ekleyip çıakrtabiliyorum o yüzden oluyor ancak bunun önüne geöne imkanımız var mı? diye sormak istemiştim... :))

    kendim kod ile artırmak istemiyorum...ben genelde şu şekilde kullanırım tablolarımı her zaman ilk satırda ID olur ve identity spesification Yes şeklinde ayarlarım başka da ayarlarla oynamam zaten biliyorsunuz increment default olarak 1 dir...umarım anlatabilmişimdir bu sefer...


    I don't give a fuck anything...

    12 Haziran 2012 Salı 16:13
  • ContactID columnunda identity (otomatik artırım) özelliği kullandığın için böle oluyor... 26 numaralı kayıt da kalmışsın bir sonraki kayıtda atıyorum 27 gelicek ama 27 id sine sahip kayıdı sildiğinde Tablondaki sıralam 27 den sonra devam edicek yani bir sonraki kayıtın 28 numara olacak...

    Bunun nasıl her seferinde birden başlatırım sorusuna cevap olarak kullanabileceğin yöntem ContactID columndaki identity özelliğin kapatman ve Bu tabloya kayıt yaparken .. ilk önce Bu tablodaki maximum ID numarasını bulup şöyleki

    select MAX(o.OgrID) from OGRENCILER as o 

    sana maximum yani en yüksek ID numarasını verecektir... Kullandığın yazılım diline göre bu dönen değere +1 ekleyerek kendi identity ni yaratabilrisin. Bu şeklide farklı identity numaraları gözünü gönlünü rahatsız etmez


    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com

    • Yanıt Olarak İşaretleyen 12 Haziran 2012 Salı 17:14
    12 Haziran 2012 Salı 16:15
  • son postunu görmediğim için üsteki yazdığım cevap havada kaldı sanırsam.. demek istiyorsunki atıyorum bir tabloda 5 kayıt var bu kayıtları sildiğinde  yine ContactID nin 1 den başlamasını istiyorsun yada tablonda çok fazla kayıt var ve kullandığın veri tipi patlamaya yakın örnek olarak tinyint kullandın ve ContactId 250 de, 255 de tinyint in patlıyacağını hesap edersek ?

    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com


    • Düzenleyen Exe.Cute 12 Haziran 2012 Salı 16:34
    • Yanıt Olarak İşaretleyen 12 Haziran 2012 Salı 17:14
    • Yanıt İşaretini Geri Alan 12 Haziran 2012 Salı 17:15
    12 Haziran 2012 Salı 16:25
  • ya bunun design tarafındaki tek çözümü dediğiniz gibi id spec No yapmak... aslında en mantıklısı her tabloda kaydı atarken kendi custom ıd ile atmak sanırım...buu contactID falan tekilleştirmeyelim ben bunu tüm projelerimde kullanmak istiyorum...peki her insert update delete işleminde mesela delete işlemi yaptık 10 silindi 9dan devam etmesi için bir class yapısı veya basit bir kod parçacığı verebilir misiniz?onun dışında otmatik artırımı kapatacam tabi ki de...bu arada vrdiğiniz bu kod ne işe yarıyorteşekkürler... asp.net 4.0 c# ado.net...

    I don't give a fuck anything...

    12 Haziran 2012 Salı 16:34
  • Pekela.. Her hangi bir tabloya kayıt yaparken kayıt numaralarının düzgün bir şekilde artışını sağlayabilmek için Primary Key olarak seçtiğin sütündaki Maximum değeri çekmen gerekecek bunu sql code parçacığı ile şu şeklide yapabilirsin

    select MAX(o.OgrenciID) from OGRENCILER 

    burda yaptığımız Öğrenciler tablosundaki PRIMARY KEY olan OgrenciID sütünundaki maximum yani en büyük değeri çekmek.. Bu sorgunun sonucu bize sadece  tek bir object değer döndürecektir... bunu bir method içine alırsak ki örnek olabilecek Sıradaki ÖğrenciId sini bana getirecek olan method aşağıdadır.

            public int SiradakiNoGetir()
            {
                SqlConnection cnn = new SqlConnection("Bağlantı cümleciği buraya gele");
                SqlCommand cmd = new SqlCommand("select MAX(o.OgrenciID) from OGRENCILER", cnn);
                cmd.Connection.Open();
                int sonID = (int)cmd.ExecuteScalar();
                cmd.Connection.Close();
    
                int siradakiNo = sonID + 1;
                return siradakiNo;
            }

    Umarım derdini anlamış ve Yardımcı olabilmişimdir.

    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com



    • Düzenleyen Exe.Cute 12 Haziran 2012 Salı 16:56
    • Yanıt Olarak İşaretleyen 12 Haziran 2012 Salı 17:15
    12 Haziran 2012 Salı 16:55
  • peki bunu yazdıktan sonra örnepşn lu şu şekilde bir kullanım olsun:

    protected void Button1_Click(object sender, EventArgs e)
    {

            SiradakiNoGetir();

    insert update delete işlemleri veya başka bir işlem...

    }

    şeklinde kullanabilirim değil mİ? yani aslında her türlü kullanabileceğini biliyorum ancak sorunsuz kullanabilirmiyim? kod içinde kullanımı...teşekkürler...

    bu arada ilgilendiğin için ayrıca teşekkürler...


    I don't give a fuck anything...



    • Düzenleyen 12 Haziran 2012 Salı 17:13
    12 Haziran 2012 Salı 17:04
  • tabiki kullanabilrsin hiç bir sakıncası yok sen sıradaki id olarak 15 i versende 45 i versende  en büyük id yi çekip sıradaki numarayı alacaktır. sana 16 yada 46 yı verecektir bu id lere sahip herhangi bir entry (kayıt) ile işlem yapmak  istersen bu methodu kullanabilirsin. bu methodun güzel yanı sanırsam senin için ucu açık bir method olacaktır  istediğin şekilde geliştirebilirsin =)

    Yardımcı Olabildiysem Ne Mutlu Bana .. 


    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com

    12 Haziran 2012 Salı 17:46
  • Yardımcı Olabildiysem Ne Mutlu Bana ..

    yardımcı olman bir yana bir de sonun kadar da ilgilisin...ben en çok buna dikkat ederim....herşey için teşekkürler...

    I don't give a fuck anything...

    12 Haziran 2012 Salı 18:21
  • Rica Ederim İyi Çalışmalar =)

    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com

    12 Haziran 2012 Salı 18:27
  • bişi takıldı aklıma , buradaki o nereden geliyor?

    Max(o.OgrenciID)


    I don't give a fuck anything...

    12 Haziran 2012 Salı 18:31
  • select OGRENCILER.OgrID,OGRENCILER.OgrAdi,OGRENCILER.OgrSoyadi from OGRENCILER 
    -- yerine uzun uzadıya öğrenciler tablosunu yazmak yerine öğrenciler tablosuna O takma adını verdim.. 
    -- kısaca sorgum bu şekile döndü
    select o.OgrID,o.OgrAdi,o.OgrSoyadi from OGRENCILER as o 
    -- alias takma işini neden yapmalıyım peki dersen .. eğer bu tabloyu başka bir tablo ile JOIN etseydin ve 
    -- join edilen yeni tabloda da OgrID, OgrAdi vb gibi aynı sütünlar olsaydı ortalık karışabilirdi .. 
    -- bende alışkanlık oldu  bu şekilde çalışmak =)


    JESUS PROMISED THE END OF ALL WICKED PEOPLE,ODIN PROMISED THE END OF ALL ICE GIANTS. I DON'T SEE MANY ICE GIANTS AROUND... exe[nokta]cute[at]live[nokta]com


    • Düzenleyen Exe.Cute 12 Haziran 2012 Salı 18:42 syntax hatası
    12 Haziran 2012 Salı 18:40
  • hımm anladım mantıklı aslında...teşekkürler...

    I don't give a fuck anything...

    12 Haziran 2012 Salı 18:45
  • select MAX(o.OgrenciID) from OGRENCILER as o 
    
    select MAX(qwe.OgrenciID) from OGRENCILER as qwe
    
    select MAX(OGRENCILER.OgrenciID) from OGRENCILER
    üçü arasında hiç bir fark yok

    Rica Ederim İyi Çalışmalar...


    • Düzenleyen Exe.Cute 12 Haziran 2012 Salı 18:47
    12 Haziran 2012 Salı 18:46
  • şimdi daha iyi anladım...

    I don't give a fuck anything...

    12 Haziran 2012 Salı 21:35