使两列在sqlite中是唯一的

问题描述:

我有一个3列的表。列是使两列在sqlite中是唯一的

BaseColumns._ID | NATIVE_CONTACT_ID | HIDDEN_TYPE 

在这些,BaseColumns._ID是主键。我想要的是,我不想让开发人员将重复值插入NATIVE_CONTACT_ID,如果他尝试插入,则应该用新值覆盖对应于NATIVE_CONTACT_ID的旧值HIDDEN_TYPE列值。

让我来澄清一下。例如,我的表格在插入几次后看起来像这样。

_ID | NATIVE_CONTACT_ID | HIDDEN_TYPE 
--------------------------------------- 
    1  23     1 
    2  24     0 
    3  25     1 
    4  26     0 

现在,当开发人员要插入新行与NATIVE_CONTACT_ID有值25,并具有HIDDEN_TYPE价值0,那么旧的HIDDEN_TYPE值应更改为这个新的价值。这里它应该从1更改为0,我不想允许重复插入NATIVE_CONTACT_ID

我希望我能清楚地解释我的问题。

现在我的问题是,我需要使用什么关键字和SQL语句来创建这样的表?

这是我曾尝试...

public static final String TABLE_NAME = "hidden_info"; 
    public static final String HIDDEN_TYPE = "hidden_type"; 
    public static final String NATIVE_CONTACT_ID = "native_contact_id"; 
    public static final String _ID = BaseColumns._ID; 

    public static void onCreate(SQLiteDatabase database) { 
     String query = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" 
       + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " 
       + NATIVE_CONTACT_ID + " INTEGER, " + HIDDEN_TYPE 
       + " INTEGER)"; 
     database.execSQL(query); 
    } 

CREATE TABLE name (column defs, UNIQUE (NATIVE_CONTACT_ID) ON CONFLICT REPLACE); 

欲了解更多信息,请参阅here

+0

谢谢老兄......请稍候...我正在尝试您的答案... – RuntimeException

+0

@RuntimeException不客气。 – mok

+0

我试过了你的答案。但是它会插入一个新的值和新值。对于exapmle,我的表有一行,NATIVE_CONTACT_ID值= 4,HIDDEN_TYPE值= 1,现在当我插入NATIVE_CONTACT_ID = 4和HIDDEN_TYPE = 0的新行时,它会插入一个新行而不是替换旧值... – RuntimeException