【发布时间】:2014-05-05 22:12:41
【问题描述】:
我有一张有 3 列的表。列是
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);
}
【问题讨论】:
标签: java sql sqlite android-sqlite unique-constraint