SQLite UNIQUE约束依赖于另一列

时间:2018-01-14 01:05:52

标签: sql sqlite

我有一个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约束,但仅限在级别列中具有相同值的主题中。

我想知道是否有内置方法来执行此操作,或者我是否必须自己编写代码。如果是这样,我是否应该使用通用语法来实现这一目标?

由于

1 个答案:

答案 0 :(得分:1)

听起来你真的希望(subject, level)对是唯一的。只要级别不同,这将允许您有重复的主题,但不允许具有相同级别的重复主题。标准unique约束支持此功能,因此您可以在表格定义的末尾添加unique(subject, level)

public static final String CREATE_SUBJECTS_TABLE = "create table " + SUBJECTS_TABLE_NAME + " (..., unique(subject, level))";