Переименование таблиц / столбцов / строк SQLite после создания индексов - PullRequest
5 голосов
/ 31 июля 2011

Если я переименую таблицы / столбцы / строки SQLite после создания индексов, будут ли старые индексы работать?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 01 августа 2011

Если вы используете ALTER TABLE с RENAME TO для переименования таблицы , то, как описано в на этой странице (из документации sqlite), индексы все равно будут работать:

Команда ALTER TABLE в SQLite позволяет пользователю переименовывать таблицу [...] Если переименованная таблица имеет триггеры или индексы, то они остаются присоединенными к таблице после ее переименования.

Но учтите, что переименование столбцов не допускается.Это одна из функций SQL, не реализованных sqlite :

Поддерживаются только варианты RENAME TABLE и ADD COLUMN команды ALTER TABLE.Другие виды операций ALTER TABLE, такие как DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT и т. Д., Опущены.

Строки не имеют имен (кроме как в смыслес PK), поэтому на самом деле нет способа переименовать их.

0 голосов
/ 11 января 2017

Да, старые индексы все еще будут функционировать.

Имейте в виду, что sqlite не заботится об именах для индексов. Первоначально при создании индекса обычно они именуются в соответствии с таблицей и полем, поэтому при переименовании таблицы в индексах все равно будет находиться имя старой таблицы. Это может вызвать проблемы, когда вы, например:

  • сбросить таблицу
  • переименовать старую таблицу:

    sqlite3 "$DB" "PRAGMA busy_timeout=20000; ALTER TABLE '$TABLE' RENAME TO '$TABLE"_backup"'"
    
  • повторно импортировать дамп-таблицу

Это приведет к ошибке, что индексы уже существуют .

Решение. Переименуйте также индексы или удалите их в переименованной таблице, прежде чем импортировать оригинал (см. этот ответ ).

0 голосов
/ 01 августа 2011

Я настоятельно рекомендую использовать Rails ActiveRecord для поддержки вашей базы данных. Это можно сделать за пределами Rails. Таким образом, ваше приложение не обязательно должно быть приложением Rails, чтобы использовать задачи rake

Смотрите здесь отличный блог о том, как это сделать http://exposinggotchas.blogspot.com/2011/02/activerecord-migrations-without-rails.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...