2011-03-10 10 views
9

estoy usando ormlite para Android y yo estoy tratando de conseguir un múltiplo columna de restricción-unicidad. A partir de ahora soy sólo es capaz de obtener una restricción única en columnas indiviudales así:Cómo hacer múltiples columna de restricción-unicidad en 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); 

y lo que quiero es

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

En mi modelo He estado usando las siguientes anotaciones para las únicas columnas:

@DatabaseField(unique = true) 

¿Hay alguna manera de hacer que esto funcione?

Respuesta

14

Cómo sobre el uso

@DatabaseField (uniqueCombo = true) 
String myField; 

anotación lugar - es una cuestión de la uniqueIndexName ser más rápido cuando se accede a los elementos de la tabla?

+0

Esta es la respuesta correcta si tiene la versión> = 4,20 que se añadió 4/30/2011. http://ormlite.com/changelog.txt. ¡Buen descubrimiento! – Pzanno

+0

Oh, gracias :) pero como he dicho - tal vez gris podría aclarar si hay un problema de rendimiento a esto. – Ready4Android

7

Editar:

Como @ Ready4Android señaló, ya que hemos añadido en la versión 4.20 apoyo a uniqueCombo campo de anotación. Estos son los documentos:

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

No debe haber diferencias de rendimiento entre el uso de este mecanismo en comparación con el uniqueIndexName se mencionan a continuación.


Sí. No se puede hacer esto con la etiqueta unique=true pero puede hacerlo con un índice único.

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

Esto creará un índice de lograr la única-dad, pero sospecho que la única verdadera = tiene un índice oculto de todos modos. Consulte la documentación:

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

Voy a mirar en lo que permite múltiples campos únicos. Puede no ser compatible con todos los tipos de bases de datos.

+3

son estas anotaciones es posible con objetos extraños? –

Cuestiones relacionadas