使两列在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);
}
谢谢老兄......请稍候...我正在尝试您的答案... – RuntimeException
@RuntimeException不客气。 – mok
我试过了你的答案。但是它会插入一个新的值和新值。对于exapmle,我的表有一行,NATIVE_CONTACT_ID值= 4,HIDDEN_TYPE值= 1,现在当我插入NATIVE_CONTACT_ID = 4和HIDDEN_TYPE = 0的新行时,它会插入一个新行而不是替换旧值... – RuntimeException