2011-03-10 23 views
9

ormlite (SQLite) birden sütun benzersiz-kısıtlamayı yapmak.nasıl Android için ormlite kullanıyorum ve bir çok kolonlu eşsiz-kısıtlamayı almaya çalışıyorum

CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL UNIQUE , 
    `store_item_id` INTEGER NOT NULL UNIQUE , 
    `_id` INTEGER PRIMARY KEY AUTOINCREMENT); 

ve ne istiyorum benim modelinde

CREATE TABLE `store_group_item` (`store_group_id` INTEGER NOT NULL , 
    `store_item_id` INTEGER NOT NULL , 
    `_id` INTEGER PRIMARY KEY AUTOINCREMENT, 
    UNIQUE(`store_group_id`, `store_item_id`); 

aşağıdaki ek açıklamaları için kullanıyorum geçerli: Bugün itibarıyla ben böyle indiviudal sütunlarda benzersiz kısıtlama almak için tek açabiliyorum Eşsiz sütunlar:

@DatabaseField(unique = true) 

Bunu çalışması için bir yol var mı?

cevap

14

Nasıl - bu uniqueIndexName meselesi tablodaki öğeleri erişirken daha hızlı olmam mı?

+0

Eğer varsa, bu doğru cevap 4/30/2011 eklendi sürüm> = 4.20. http://ormlite.com/changelog.txt. İyi bul! – Pzanno

+0

Oh teşekkürler :) ama dediğim gibi - belki bir performans yakalaması varsa Gray açıklığa kavuşabilir. – Ready4Android

7

Düzenleme: @ Ready4Android belirttiği gibi

, biz beri uniqueCombo açıklama alanı için sürüm 4.20 destek ekledik. İşte belgeler şunlardır:

http://ormlite.com/docs/unique-combo

aşağıda belirtilen uniqueIndexName karşı bu mekanizmayı kullanan arasında performans farkı olmamalıdır.


Evet. Bunu unique=true etiketiyle yapamazsınız, ancak benzersiz bir dizine sahip olabilirsiniz.

@DatabaseField(uniqueIndexName = "unique_store_group_and_item_ids") 
int store_group_id; 
@DatabaseField(uniqueIndexName = "unique_store_group_and_item_ids") 
int store_item_id; 

Bu eşsiz-lık gerçekleştirmek için bir dizin oluşturur ama gerçek = benzersiz yine gizli bir dizin olduğunu sanıyorum. docs bakınız:

http://ormlite.com/docs/unique-index

Ben birden çok benzersiz alanları sağlayan içine bakacağız. Tüm veritabanı türleri tarafından desteklenmeyebilir. yerine

@DatabaseField (uniqueCombo = true) 
String myField; 

ek açıklama kullanma hakkında

+3

yabancı nesnelerle bu ek açıklamalar mümkün mü? –

İlgili konular