如何在 SQLite 中重命名索引?

Yah*_*din 3 sql sqlite

在其他数据库(如 MySQL)中,我可以这样做:

ALTER TABLE demo RENAME INDEX old_index TO new_index
Run Code Online (Sandbox Code Playgroud)

SQLite 的最佳解决方法是什么?

更新

SQLite 似乎不支持这种语法。在这种情况下,我可以使用解决方法。例如:

DROP INDEX old_index;
CREATE INDEX new_index ON demo(col1, col2);
Run Code Online (Sandbox Code Playgroud)

上面的问题是我需要手动找出哪些列被索引。我想要一些可以自动完成的事情,比如:

set columns = select columns indexed by old_index;
DROP INDEX old_index;
CREATE INDEX new_index ON demo(columns);
Run Code Online (Sandbox Code Playgroud)

CL.*_*CL. 5

SQLite 的 ALTER TABLE 不支持这一点。只需重新创建它:

DROP INDEX old_index;
CREATE INDEX new_index ON demo([...]);
Run Code Online (Sandbox Code Playgroud)

您可以从架构中获取索引定义:

SELECT sql FROM sqlite_master WHERE type = 'index' AND name = 'old_index';
Run Code Online (Sandbox Code Playgroud)

但是没有从 SQLite 内部修改和执行结果的机制。