android - 在 SQLite 中更改表的主键

标签 android sql sqlite

我有下表:

[id,lang,data]

其中主键是id

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

谢谢

最佳答案

根据@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;

关于android - 在 SQLite 中更改表的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900552/

相关文章:

android - 显示多个图像动画

sql - 关于重复数据删除软件的建议?

mysql - SQL 查询中的 ALL 运算符子句

mysql - 在输入框中输入错误拼写时返回错误消息

java - 是否可以从cordova android插件中运行的后台线程调用javascript

android - 如何从 WebView 获取可点击的选中文本

android - 选中后禁用复选框,android

sqlite - 将集合绑定(bind)为 "where col in ?"子句的右侧

ios - Plist 到 SQLITE

java - Android SQLite : How to ensure consistency in batch upload and delete upon success if no unique key is given?