我有下表:
[id,lang,data]
主键为id
我想将主键更改为id,lang
而不会丢失表的内容。我必须运行哪些查询来改变它
由于
答案 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;