2011-03-10 3 views
9

Android 용 ormlite를 사용하고 있으며 다중 열 고유 제한 조건을 얻으려고합니다.ormlite에서 다중 열 고유 제한을 수행하는 방법 (SQLite)

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

와 내가 원하는 것은 내 모델에서

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`); 

나는 다음과 같은 주석을 사용하고 있습니다 : 지금부터 나는이 같은 개개의 열에 대한 고유 제한 조건을 얻을에만 수 있어요 고유 한 열 :

@DatabaseField(unique = true) 

이 방법을 사용할 수 있습니까?

답변

14

방법 - 그것은 uniqueIndexName의 문제의 표에 항목에 액세스 할 때 빠른 것입니까?

+0

이것은 4/30/2011에 추가 된 버전이 4.20 이상인 경우 정답입니다. http://ormlite.com/changelog.txt. 좋은 발견! – Pzanno

+0

오 감사합니다 :)하지만 내가 말했듯이, 어쩌면 그레이가 성능에 문제가 있는지 분명히 할 수 있습니다. – Ready4Android

7

편집 : @ Ready4Android는 지적

, 우리는 이후 uniqueCombo 주석 필드 버전 4.20 지원을 추가했습니다. 여기서 문서는 :

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

아래 설명한 대 uniqueIndexName이 메커니즘을 사용 간의 성능 차이가 없어야한다.


예. unique=true 태그로는이 작업을 수행 할 수 없지만 고유 색인을 사용하여 작업 할 수 있습니다.

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

이 독특한 다움을 달성하기 위해 인덱스를 생성하지만 나는 진정한 = 고유 어쨌든 숨겨진 인덱스가 있다고 생각한다. 해당 문서를 참조하십시오

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

내가 여러 독특한 필드를 허용으로 볼 것이다. 모든 데이터베이스 유형에서 지원되지 않을 수 있습니다. 대신

@DatabaseField (uniqueCombo = true) 
String myField; 

주석을 사용하는 방법에 대한

+3

은 외부 객체에서 사용할 수있는 이러한 주석입니까? –