0

我在 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);

但是这个查询不应该工作,因为第一个和第二个值在表中不是唯一的

谢谢。

4

1 回答 1

0

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

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);

第二个将失败,因为column1并且column2已经存在。

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


但是我怎样才能为现有的表添加独特的?

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

CREATE UNIQUE INDEX name ON History(column1, column2);
于 2012-10-17T20:01:49.197 回答