Selam,
Arkadaşlar başlıktan biraz anlamışsınızdır sanırım ama yine de açıklama yapayım,
"KODU" alanim Unique oluyor ancak ben istiyorum ki eğer değer Null girilmişse unique ozelligi calismasin yani şöyle diyim..
Null değer dışındaki tüm değerlerde alan unique ozelligini korusun yani kayda izin vermesin ancak gönderilen değer Null ise daha önce o alana null değer kaydedilse bile sorun çıkmasın..
Böyle bir şey mümkün mü? Mümkünse nasıl yapabilirim?
Teşekkür ederim, kolay gelsin
Unique index ancak Nullere izin veren..
-
- Üye
- Mesajlar: 163
- Kayıt: 06 Nis 2006 12:22
Re: Unique index ancak Nullere izin veren..
Arkadaşım,Glen yazdı:Selam,
"KODU" alanim Unique oluyor ancak ben istiyorum ki eğer değer Null girilmişse unique ozelligi calismasin yani şöyle diyim..
Null değer dışındaki tüm değerlerde alan unique ozelligini korusun yani kayda izin vermesin ancak gönderilen değer Null ise daha önce o alana null değer kaydedilse bile sorun çıkmasın..
Böyle bir şey mümkün mü? Mümkünse nasıl yapabilirim?
Teşekkür ederim, kolay gelsin
UNIQUE benzersiz demek, şimdi bir alanı hem benzersiz tanıtıp hem de içerisinde birden fazla null alan koyamazsınız. Çünkü null alanlar benzersiz özelliğini ihlal eder.
Belki programatik (SQL) ile bir yol bulunabilir, ki bu durumda alanı UNIQUE olarak tanımlamamak gerekir.
Saygılar ve Başarılar
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhabalar,
Teorik olarak konuşmak gerekirse istediğiniz şey olmaz. Adı üstünde Uniq bir key den bahsediyoruz, diyelim ki siz NULL girişine izin verdiniz ama ikinci bir NULL değerin girişine izin verilmeyecektir. Bence siz bu durumdan kurtulmanın bir yoluna bakın ya da UNIQ key yerine normal key özelliğini kullanın. Ama kayıt yaptırmadan önce aynı koddan var mı diye ön bir sql ile kontrol edin. Tabi bu da performansı ciddi derecede düşürecektir.
Ama şöyle bir şey ile bu işten kurtulabilirsinz, diyelim ki KOD alanınınz alfanümerik bir alan. A001, B001 gibi kodları içerebiliyor.
Yeni bir kayıt girildiğinde eğer KOD hanesi null ise, beforepost olayında kontrol edilmelidir. KOD alanına KOD := 'nul_' + Inttostr(GetTickCount); gibilerinden bir değer verin.
Daha sonra kod verilmemiş kayıtları listelemek kolay olacak ve gerekirse bunların kodlarını değiştirebileceksiniz. Buradaki GetTickCount çok iyi bir yöntem değil ama başlarda iş görür taki çakışma durumuna kadar.
Şimdi UNIQ key kullanmanın kolaylığı oluyor tabiki, bir kişi var olan bir kodu kullandığında kayıt sırasında hata üretiliyor sizde bunu böyle kaydemezsiniz diyordunuz. Yani uygulamanın hata yapmasına olanak tanıyordunuz. Pekte iyi bir fikir gibi görünmüyor. Kayıt esnasında kişi KOD alanına bir kod yazıp al satıra geçtiğinde otomatik kontrol daha mantıklı gibi geliyor. KOD tabloda yoksa hiç bir uyarı vermezsin. Eğer kod tabloda varsa kod alanını boşaltırsınız. Falan filan..
Umarım faydalı olabilmişimdir..
Saygılar...
Teorik olarak konuşmak gerekirse istediğiniz şey olmaz. Adı üstünde Uniq bir key den bahsediyoruz, diyelim ki siz NULL girişine izin verdiniz ama ikinci bir NULL değerin girişine izin verilmeyecektir. Bence siz bu durumdan kurtulmanın bir yoluna bakın ya da UNIQ key yerine normal key özelliğini kullanın. Ama kayıt yaptırmadan önce aynı koddan var mı diye ön bir sql ile kontrol edin. Tabi bu da performansı ciddi derecede düşürecektir.
Ama şöyle bir şey ile bu işten kurtulabilirsinz, diyelim ki KOD alanınınz alfanümerik bir alan. A001, B001 gibi kodları içerebiliyor.
Yeni bir kayıt girildiğinde eğer KOD hanesi null ise, beforepost olayında kontrol edilmelidir. KOD alanına KOD := 'nul_' + Inttostr(GetTickCount); gibilerinden bir değer verin.
Daha sonra kod verilmemiş kayıtları listelemek kolay olacak ve gerekirse bunların kodlarını değiştirebileceksiniz. Buradaki GetTickCount çok iyi bir yöntem değil ama başlarda iş görür taki çakışma durumuna kadar.
Şimdi UNIQ key kullanmanın kolaylığı oluyor tabiki, bir kişi var olan bir kodu kullandığında kayıt sırasında hata üretiliyor sizde bunu böyle kaydemezsiniz diyordunuz. Yani uygulamanın hata yapmasına olanak tanıyordunuz. Pekte iyi bir fikir gibi görünmüyor. Kayıt esnasında kişi KOD alanına bir kod yazıp al satıra geçtiğinde otomatik kontrol daha mantıklı gibi geliyor. KOD tabloda yoksa hiç bir uyarı vermezsin. Eğer kod tabloda varsa kod alanını boşaltırsınız. Falan filan..
Umarım faydalı olabilmişimdir..
Saygılar...