我有一个Java文件,在SQLite中创建一个主题表,如下所示:
public static final String CREATE_SUBJECTS_TABLE = "create table " + SUBJECTS_TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,SUBJECT TEXT,LEVEL INTEGER)";
db.execSQL(CREATE_SUBJECTS_TABLE);
如果我想让SUBJECT TEXT独一无二,我可以编辑它来说SUBJECT TEXT UNIQUE,但这意味着我不能在多个级别拥有相同的主题。我希望有一种方法能够在多个级别上拥有相同的主题,但不能重复具有相同级别的主题。 UNIQUE约束,但仅限在级别列中具有相同值的主题中。
我想知道是否有内置方法来执行此操作,或者我是否必须自己编写代码。如果是这样,我是否应该使用通用语法来实现这一目标?
由于
答案 0 :(得分:1)
听起来你真的希望(subject, level)
对是唯一的。只要级别不同,这将允许您有重复的主题,但不允许具有相同级别的重复主题。标准unique
约束支持此功能,因此您可以在表格定义的末尾添加unique(subject, level)
:
public static final String CREATE_SUBJECTS_TABLE = "create table " + SUBJECTS_TABLE_NAME + " (..., unique(subject, level))";