Android中的SQLite唯一约束不起作用

时间:2012-06-13 22:59:58

标签: android sqlite

我有以下表格定义:

CREATE TABLE arbol32 (_id integer primary key autoincrement, ID integer, NIVEL integer, TEXTO text, ID_ORIG integer, CONTRATO integer, CODALMTESTOR text, CENTRO text, SECUEN text, DNIACUM text, UNIQUE(ID));

以下一段被称为不止一次的代码:

if(sArbol32.getPropertyCount()>0)
            {
                cargarAuxiliares=true;    
                  Arbol32BE[] arbol32=WSManager.RetrieveArbol32FromSoap(sArbol32);
                    arbol32Table.open();
                    arbol32Table.beginTransaction();
                    for(int i=0;i<sArbol32.getPropertyCount();i++){
                      arbol32Table.create(arbol32[i].id, arbol32[i].nivel, arbol32[i].texto, arbol32[i].id_orig, 
                                            arbol32[i].contrato, arbol32[i].codalmtestor, arbol32[i].centro,arbol32[i].secuen,arbol32[i].dniacum);
                    }
                    arbol32Table.setTransactionSuccessful();
                    arbol32Table.endTransaction();
                    arbol32Table.close();
            }

最后,这是create方法的代码:

public long create(int id,int nivel,String texto,int id_orig,int contrato,String codalmtestor,String centro,String secuen, String dniacum) {
Log.i(TAG, "Inserting record...");
ContentValues initialValues = new ContentValues();
//initialValues.put(KEY_ROWID, id);
initialValues.put(KEY_ID,id);
initialValues.put(KEY_NIVEL,nivel);
initialValues.put(KEY_TEXTO,texto);
initialValues.put(KEY_ID_ORIG,id_orig);
initialValues.put(KEY_CONTRATO,contrato);
initialValues.put(KEY_CODALMTESTOR,codalmtestor);
initialValues.put(KEY_CENTRO,centro);
initialValues.put(KEY_SECUEN,secuen);
initialValues.put(KEY_DNIACUM,dniacum);
return mDb.insert(DATABASE_TABLE, null, initialValues);

}

我的问题是,虽然指定了UNIQUE,但会插入具有相同ID的重复行。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我的错误......我正在使用较旧的数据库进行测试。我正在做的事情还可以!