17

我有下表:

[id,lang,data]

主键在哪里id

我想将主键更改为 id,lang不丢失表的内容。我必须运行什么查询才能更改它

谢谢

4

1 回答 1

49

根据@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;
于 2013-06-03T16:57:22.593 回答