【问题标题】:Insert or replace 2 unique values插入或替换 2 个唯一值
【发布时间】:2012-10-18 05:12:32
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    如果我理解您的问题,只需在构建表格时使用 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);
    

    【讨论】:

    • 谢谢,我会试试的,但我怎样才能为现有的表添加独特的?改变表...?我尝试“创建唯一索引...”,但这无济于事。
    猜你喜欢
    • 2016-01-13
    • 2013-12-08
    • 2020-08-03
    • 2018-11-25
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    相关资源
    最近更新 更多