我在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。
答案 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);
第二个会失败,因为column1
和column2
已经存在。
理解如果在我的示例中使用INSERT OR REPLACE
,则第二个语句将替换第一个语句(不会抛出任何异常)。
但我怎样才能为现有表添加唯一性?
通常您会使用ALTER TABLE
向现有表添加约束,但SQLite不允许这样做......但是您可以解决此限制:
CREATE UNIQUE INDEX name ON History(column1, column2);