Karşılaştırmalar, bir tablonuz var ve kişilere ait ad ve telefon bilgilerini tutuyorsunuz ve kişi ad alanını
UNIQUE
olarak işaretlediniz. Peki hiç şunu düşündünüz mü? Kullanıcı
Murat Genç adında bir kayıt girdi ve daha sonra
başka biri
MURAT GENÇ diye bir kayıt girdi.
UNIQUE yaptığınız alan acaba böyle bir kayıt girişine izin verecekmidir.
Cevap evet. Peki neden; SQLite da bir alana girilen veri küçük/büyük harfe duyarlı olarak eklenir. Yani SQLite için
a ve
A
farklı şeylerdir. Peki bunu engellemenin bir yolu var mı?
Veri bütünlüğü kavramı dahilinde alan bazında verinin bütünlüğünü korumak için alan tanımı yapılırken küçük/büyük harfe göre duyarlı olup olmamasını belirtebiliriz.
COLLATE anahtar kelimesi ile bunu gerçekleştirebiliriz. SQLite 3 tip gömülü karşılaştırma tipi vardır. Biri default olarak ayarlı olan
BINARY, diğeri küçük/büyük harfe göre duyarlılığını kaldıran
NOCASE üçüncüsü ise BINARY karşılaştırmanın tersi olan
REVERSE.
Sonuç olarak SQLite da tanımlanan bir alanda büyük/küçük harf duyarlılığını kaldırmak istiyorsak alan tanımında
COLLATE NOCASE ifadesini kullanmamız yeterlidir.
CREATE TABLE Kisiler (id INTEGER PRIMARY KEY,ad TEXT NOT NULL COLLATE NOCASE UNIQUE)