我需要重命名 SQLite 数据库中某些表中的一些列。 我知道一个similar question之前在stackoverflow上问过,不过一般是针对SQL的,没有提到SQLite的情况。
来自 ALTER TABLE 的 SQLite 文档,我认为不可能“轻松地”做这样的事情(即单个 ALTER TABLE 语句)。
我想知道有人知道用 SQLite 做这种事情的通用 SQL 方法。
最佳答案
请注意,从版本 3.25.0 released September 2018 开始您现在可以使用 ALTER TABLE
来 rename a column .
下面是“创建新表并删除旧表”的原始答案。
假设您有一张表,需要将“colb”重命名为“col_b”:
首先使用临时名称创建新表,基于旧表定义但使用更新的列名:
CREATE TABLE tmp_table_name (
col_a INT
, col_b INT
);
然后复制原表对面的内容。
INSERT INTO tmp_table_name(col_a, col_b)
SELECT col_a, colb
FROM orig_table_name;
删除旧表。
DROP TABLE orig_table_name;
最后你将临时表表重命名为原来的:
ALTER TABLE tmp_table_name RENAME TO orig_table_name;
不要忘记重新创建索引、触发器等。The documentation更全面地了解陷阱和注意事项。
将所有这些包装在 BEGIN TRANSACTION;
和 COMMIT;
中也可能是个好主意。
关于sqlite - 如何重命名 SQLite 数据库表中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805363/