Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird index sorunu
#1
Merhaba

Firebird 2.5 veri tabanında index tanımlayarak mükerrer kayıt kontrolü yaptırmak istiyorum. Fakat Ğ.İ.Ö.Ş.Ü.Ç harflerinde büyük ve küçük farklılıkla yazıldığında index alanı kaydı yokmuş gibi kabul edip kayıt işlemini gerçekleştiriyor örnek (ÇAY kaydı varken çay yazında bu kaydı kabul ediyor. Wın1254 ve TURKISH_CHARSET olarak tanımlı database firebird kısmında. Bu kontrolü data kısmında nasıl çözebilirim eğer database kısmında çözümü yoksa bunu delphi tarafında nasıl çözebilirim. Şunu da belirtmek istiyorum ki data ya büyük harfe çevirerek kayıt yaptırmak istemiyorum. Eğer data da ÇAY olarak kayıt varsa çay olarak giriş yapılmaya çalıştığımda uyarı vermesini istiyorum. Mysql ve mssql de bu sorun yok sorunsuz çalışıyor fakat benim firebird tarafında bunu çözmem gerekiyor. Konu hakkında yardımlarınız için şimdiden teşekkür ederim.
Cevapla
#2
(06-03-2017, Saat: 22:30)quake16 Adlı Kullanıcıdan Alıntı: Merhaba

Firebird 2.5 veri tabanında index tanımlayarak mükerrer kayıt kontrolü yaptırmak istiyorum. Fakat Ğ.İ.Ö.Ş.Ü.Ç harflerinde büyük ve küçük farklılıkla yazıldığında index alanı kaydı yokmuş gibi kabul edip kayıt işlemini gerçekleştiriyor örnek (ÇAY kaydı varken çay yazında bu kaydı kabul ediyor. Wın1254 ve TURKISH_CHARSET olarak tanımlı database firebird kısmında. Bu kontrolü data kısmında nasıl çözebilirim eğer database kısmında çözümü yoksa bunu delphi tarafında nasıl çözebilirim. Şunu da belirtmek istiyorum ki data ya büyük harfe çevirerek kayıt yaptırmak istemiyorum. Eğer data da ÇAY olarak kayıt varsa çay olarak giriş yapılmaya çalıştığımda uyarı vermesini istiyorum. Mysql ve mssql de bu sorun yok sorunsuz çalışıyor fakat benim firebird tarafında bunu çözmem gerekiyor. Konu hakkında yardımlarınız için şimdiden teşekkür ederim.


create unique index adi_unq_idx on ogrenci computed by (lower(ogrenci_adi));


Örnek ogrenci tablosunda ogrenci_adi alani tanımlanmıştır.
ALİ
ali
izin vermez
--
ÇAY
çay
çAy
izin vermez.

“Do. Or do not. There is no try.”
Cevapla
#3
Quake16, Mesajı yanlış yere açmışsın. Firebird bölümünde açman daha doğru olurdu. Index olarak @masteryoda'nın dediği şekilde de yapabilirsin, kendin kod tarafında kayıt yapmadan önce de kontrol edebilirsin. İşi veritabanına bırakırsan kayıt sırasında programın kontrolü dışında hata mesajları çıkabilir, try-catch kullanman gerekebilir.
Ben kod tarafında kendi kontrollerini kendinin yapmanı tavsiye ederim. Artılarını ve eksilerini ancak sen kendin deneyerek çözebilirsin diye düşünüyorum.

E.O.F.  (End Of Fun )
Rolleyes
Cevapla
#4
Merhaba

Yardımlarınız için teşekkür ederim data kısmında olan problemimi verdiğiniz kodla çözülmüş oldu.
Cevapla
#5
(07-03-2017, Saat: 17:33)quake16 Adlı Kullanıcıdan Alıntı: Merhaba

Yardımlarınız için teşekkür ederim data kısmında olan problemimi verdiğiniz kodla çözülmüş oldu.

client tarafında da aynı kontrolü yapmanız daha iyi olacaktır sonuçta aynı kayıt varsa daha anlamlı bir mesajla kullanıcıya bildirim verebilirsiniz.

localete ile veya ayrı bir query ile aynı kayıt varmı diye kontrol edeblirsiniz
sql ile kontrol için index ile aynı mantıkta buraya bakabilirsiniz https://firebirdsql.org/refdocs/langrefu...upper.html

“Do. Or do not. There is no try.”
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Firebird Request synchronization error uparlayan 6 148 30-05-2020, Saat: 10:58
Son Yorum: klavye
  Firebird 2.0 dan 3.0'a geçiş nasıl yapılmalı? baloglurecep 15 824 18-05-2020, Saat: 01:31
Son Yorum: Ahmet İPEKÇİ
  Firebird Monitor Yazılımı arıyorum boreas 3 304 08-05-2020, Saat: 13:32
Son Yorum: esistem
  Firebird Ağ Yavaşlığı Nedenleri baloglurecep 10 824 26-03-2020, Saat: 10:04
Son Yorum: sadettinpolat
  Firebird'de Join'li Update nasıl yapılır? uparlayan 4 676 15-02-2020, Saat: 13:24
Son Yorum: sabanakman



Konuyu Okuyanlar: 1 Ziyaretçi