在SQLite中更改表的主键

时间:2013-06-03 15:38:09

标签: android sql sqlite

我有下表:

[id,lang,data]

主键为id

我想将主键更改为id,lang而不会丢失表的内容。我必须运行哪些查询来改变它

由于

1 个答案:

答案 0 :(得分:31)

根据@GarnerJosh的评论,您无法运行单个命令来更改它 - SQLite不允许更改现有的表结构。而是使用复合主键创建一个新表并复制数据:

CREATE TABLE my_table_copy( 
    id INTEGER, 
    lang INTEGER,
    data TEXT,
    PRIMARY KEY (id, lang)
);
INSERT INTO my_table_copy (id, lang, data)
   SELECT id, lang, data FROM my_table;
DROP TABLE my_table;
ALTER TABLE my_table_copy RENAME TO my_table;