Sqlite:重命名列和数据类型

时间:2013-04-10 17:26:35

标签: c# sqlite android-sqlite

我正在使用SQLite数据库。由于SQLite不支持删除/重命名/重新排序列(使用alter table命令),我正在为以下任务编写自定义方法:(备份现有表,然后创建具有匹配要求的新表等等。)其他几个主题中描述了这一点。

以下是数据库操作: DROP列 RENAME(列和数据类型) 添加列 REORDER专栏。

我想知道这些操作应该以什么顺序完成?我的困惑主要在于重命名列之前是否应该降低或者反过来?

另外,我需要一些关于如何重命名列的方法,包括数据类型和移动数据?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先,在以下说明中出现问题时,创建数据库的备份。

操作顺序应为CREATE newtableINSERT INTO newtableDROP oldtable

使用每列的正确列名和数据类型创建一个新表。然后做这样的事情:

INSERT INTO new_table(columns, ...)
(SELECT columns, ...
FROM old_table)

如果新数据类型与旧数据类型不直接兼容,则可能需要对不同的数据类型执行强制转换。

您需要确保从旧表中选择的列与INSERT INTO语句中新表中列的定义顺序相同。

将数据插入新表后,您可以验证是否已正确插入所有数据。请务必更新其他表中的任何外键引用,以避免出现外键约束的任何问题。

然后您可以删除旧表并将新表重命名为旧表的名称:

DROP old_table;
ALTER TABLE new_table_name RENAME TO old_table_name;