在SQLite中更改表的主键

Add*_*dev 15 sql sqlite android

我有下表:

[id,lang,data]
Run Code Online (Sandbox Code Playgroud)

主键是哪里 id

我想更改主键, id,lang而不会丢失表的内容.我必须运行哪些查询才能更改它

谢谢

Pin*_*nyM 35

根据@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;
Run Code Online (Sandbox Code Playgroud)

  • Sqlite 文档中有关于此方法的详细信息:https://www.sqlite.org/lang_altertable.html “Making Other Kinds Of Table Schema Changes” (2认同)