将唯一列添加到已存在的 sqlite 表中

Sha*_*Ykm 4 sqlite android

我在 Android 应用程序中使用 SQLite 数据库,我想知道如何向已创建的表添加唯一列。我的意思是现有表唯一性由 2 个值确定,我想编辑表唯一性由 3 个值确定(存在 2 个值和另外 1 个值)。

是否可以?

CL.*_*CL. 6

writable_schema技巧不适用于 UNIQUE,因为需要更改内部索引。

进行此更改的唯一方法是使用表的临时副本:

CREATE TABLE NewTable(
    [...],
    UNIQUE(Col1, Col2, Col3)
);
INSERT INTO NewTable SELECT * FROM MyTable;
DROP TABLE MyTable;
ALTER TABLE NewTable RENAME TO MyTable;
Run Code Online (Sandbox Code Playgroud)

(这应该包含在事务中;Android 会onUpdate自动执行此操作。)