En iyi yanıtlayıcılar
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 232323232323 14 Haziran 2012 Perşembe 21:43
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 etmezJESUS 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 232323232323 12 Haziran 2012 Salı 17:14
-
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 232323232323 12 Haziran 2012 Salı 17:15
Tüm Yanıtlar
-
-
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 :)
- Düzenleyen Coşkun Özdemir 12 Haziran 2012 Salı 15:34
-
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...
-
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 etmezJESUS 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 232323232323 12 Haziran 2012 Salı 17:14
-
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 232323232323 12 Haziran 2012 Salı 17:14
- Yanıt İşaretini Geri Alan 232323232323 12 Haziran 2012 Salı 17:15
-
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...
-
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 232323232323 12 Haziran 2012 Salı 17:15
-
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 232323232323 12 Haziran 2012 Salı 17:13
-
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
-
-
-
-
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ı
-
-
-