如果在创建索引后重命名SQLite Tables / Columns / Rows,旧索引是否仍然可以正常运行?
谢谢!
答案 0 :(得分:5)
如果您使用ALTER TABLE
与RENAME TO
重命名表格,那么正如this page(来自sqlite文档)所述,索引仍会工作:
SQLite中的ALTER TABLE命令允许用户重命名表[...]如果重命名的表具有触发器或索引,则在重命名后,这些表仍然附加到表中。
但请注意,不允许重命名列。这是SQL features not implemented by sqlite之一:
仅支持ALTER TABLE命令的RENAME TABLE和ADD COLUMN变体。其他类型的ALTER TABLE操作(如DROP COLUMN,ALTER COLUMN,ADD CONSTRAINT等)将被省略。
行没有名字(除了PK的意义外)所以没有真正重命名的方法。
答案 1 :(得分:0)
我强烈建议您使用Rails ActiveRecord迁移来维护您的数据库。这可以在Rails之外完成。因此,您的应用程序不需要是Rails应用程序来使用rake任务
请点击此处查看有关如何执行此操作的优秀博客http://exposinggotchas.blogspot.com/2011/02/activerecord-migrations-without-rails.html
答案 2 :(得分:0)
是的,旧指数仍将有效。
请注意,sqlite并不关心索引的名称。最初,当创建索引时,它们通常以表和字段命名,因此当您重命名表时,索引仍将具有旧表的名称。举例来说,这可能会导致问题:
重命名旧表:
Sub
这将导致错误,索引已存在。
解决方案:重命名索引,或者在重新导入原始文件之前将其删除(请参阅this answer)。