在两列上创建UNIQUE约束(仅当数据库中都存在时)。如果其中一列不同,我不想限制它

时间:2014-08-28 18:14:28

标签: android sqlite android-sqlite

在下面的代码段中,我有两列UNIQUE(MEMBER_NAME& KEY_CALORIES)。如果两列都相同,我只希望它是独一无二的。我想尝试UNIQUE(MEMBER_NAME,KEY_CALORIES),或者其他内容。

我想要完成的例子: 也许用户输入MEMBER_NAME(但该名称已经在数据库中)但KEY_CALORIES不同我希望能够将该项添加到SQLite数据库。如果用户输入已存在的MEMBER_NAME和KEY_CALORIES(仅当它们都相同时),我希望它是独一无二的。如果我无法理解我想要完成的任务,我会更新我的问题。

    // TABLE CREATION STATEMENT
private static final String CREATE_TABLE = "create table " + TABLE_MEMBER
        + "(" + MEMBER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
        + MEMBER_NAME + " TEXT NOT NULL UNIQUE," + KEY_CALORIES
        + " INT NOT NULL UNIQUE);";

1 个答案:

答案 0 :(得分:1)

使用UNIQUE(MEMBER_NAME)约束意味着您只能插入MEMBER_NAME一次。您想要的是UNIQUEMEMBER_KEY上的KEY_CALORIES约束。

您可以使用UNIQUE(MEMBER_KEY,KEY_CALORIES)作为约束,这意味着它们的组合值应该是唯一的。只要此组合是唯一的,两个列都允许重复。

可能的重复/参考答案: Sqlite table constraint - unique on multiple columns