插入或替换2个唯一值

时间:2012-10-17 19:37:22

标签: android sqlite

我在Android应用程序中使用sqlite,我希望通过2个唯一的行值在表中插入。例如:

id| column1 | column2 | column3|
1.   1              2     3  
2.   2              3     4

唯一列 - COLUMN1和COLUMN2

 INSERT OR REPLACE INTO HISTORY (id, column1, column2, column3) VALUES (null, 2, 3, 6);

但是这个查询不应该起作用'因为第1和第2个值在表

中不是唯一的

日Thnx。

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题,只需在构建表时使用UNIQUE constraint

CREATE TABLE History (
    _id INTEGER PRIMARY KEY,
    column1 INTEGER,
    column2 INTEGER,
    column3 INTEGER,
    UNIQUE (column1, column2));

然后,如果您尝试这些INSERT语句:

INSERT INTO History (column1, column2, column3) VALUES (2, 3, 0);
INSERT INTO History (column1, column2, column3) VALUES (2, 3, 6);

第二个会失败,因为column1column2已经存在。

理解如果在我的示例中使用INSERT OR REPLACE,则第二个语句将替换第一个语句(不会抛出任何异常)。


  

但我怎样才能为现有表添加唯一性?

通常您会使用ALTER TABLE向现有表添加约束,但SQLite不允许这样做......但是您可以解决此限制:

CREATE UNIQUE INDEX name ON History(column1, column2);