如果存在sqlite,重命名列?

3 sqlite

我创建了一个使用了最初没有使用的列,但现在我们正在设置和获取值

我发现列名不正确,我想要更改列名但想要保留设备中现有数据库的数据

是否有任何查询来检查和重命名 sqlite Column这样的东西

Alter Table MyTable RENAME COLUMN IF EXISTS MyColumn TO MyColumn1;
Run Code Online (Sandbox Code Playgroud)

用户在用户端使用现有数据库丢弃INDIA请帮帮我

注意:

我不想抛出异常

2.也不想重新创建表格

我知道两种方式都可以完成任务,但这不是最好的做法

而不是重新创造我将与糟糕的名字生活在一起

我认为可能有解决方案,因为我们可以检查表,希望我们可以检查列

SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT name FROM sqlite_master WHERE type='table' AND name = 'MyTable';
Run Code Online (Sandbox Code Playgroud)

ted*_*ted 7

据我所知,没有办法按你的要求做.但是你可以使用

SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
Run Code Online (Sandbox Code Playgroud)

检查列是否存在.但是,由于您只需要重命名该列,因此我不知道重新创建表的问题.娱乐没有意味着数据丢失.

程序将遵循:

  1. BEGIN TRANSACTION;
  2. ALTER TABLE table RENAME TO tmp_table;
  3. CREATE TABLE table (columnNames);
  4. INSERT INTO table(columnNames) SELECT columnNamesWrong FROM tmp_table;
  5. DROP TABLE tmp_table_name;
  6. COMMIT;

如果这是大惊小怪,请使用工具来做到这一点.

关于最佳实践部分,最佳做法是正确命名表.由于您通常围绕字段名称构建所有查询,因此重命名列意味着打破这些查询.我不知道你在找什么,但sqlite手册说明:

SQLite支持ALTER TABLE的有限子集.SQLite中的ALTER TABLE命令允许用户重命名表或向现有表添加新列.无法重命名列,删除列,或从表中添加或删除约束.

需要注意的是不是可能.