如何在SQLite中重命名索引?

3
在其他数据库(如MySQL)中,我只需要这样做:
ALTER TABLE demo RENAME INDEX old_index TO new_index

如何最好地解决SQLite的问题?

更新

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

DROP INDEX old_index;
CREATE INDEX new_index ON demo(col1, col2);

上述方法存在的问题是我需要手动查找哪些列被索引了。我想要自动完成这个过程,类似下面这样的方式:
set columns = select columns indexed by old_index;
DROP INDEX old_index;
CREATE INDEX new_index ON demo(columns);
1个回答

8

SQLite的ALTER TABLE不支持此操作。只需重新创建它:

DROP INDEX old_index;
CREATE INDEX new_index ON demo([...]);

您可以从模式中获取索引定义:

SELECT sql FROM sqlite_master WHERE type = 'index' AND name = 'old_index';

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


在这种情况下,有没有一种使用SQL确定索引最初位于哪个列的方法? - Yahya Uddin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接