创建索引后重命名SQLite表/列/行

时间:2011-07-31 17:16:47

标签: sql database sqlite database-design format

如果在创建索引后重命名SQLite Tables / Columns / Rows,旧索引是否仍然可以正常运行?

谢谢!

3 个答案:

答案 0 :(得分:5)

如果您使用ALTER TABLERENAME 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)。