Переименовать ссылку на ограничение, которая изменилась из-за переименования таблицы - PullRequest
0 голосов
/ 26 сентября 2018

Я сделал несколько SQL, чтобы обновить несколько вещей, и из-за некоторых ограничений мне пришлось:

  • Переименовать таблицу A в A_OLD.
  • Создать таблицу A (с некоторыми столбцами, которых A (теперь A_OLD) не имеет).
  • Слияние A_OLD с A.

Но теперь я заметил, что у меня есть проблема, потому что:

Когда я переименовал A в A_OLD, он также изменил любое ограничение A на ограничение A_OLD.Например: CONSTRAINT "FK_A" FOREIGN KEY ("ID_A") REFERENCES "A_OLD" ("ID_A") ENABLE

Но мой A_OLD был просто временным, что я могу сделать, чтобы изменить любую ссылку на A_OLD на ссылку на A?

1 Ответ

0 голосов
/ 26 сентября 2018

Вам нужно будет добавить «новое» ограничение.

Внутренне база данных не заботится о названии вещей (очень).Вместо того, чтобы использовать имена для вещей, метаданные используют ссылки на объекты - и переименование объекта не меняет ID объекта, оно просто меняет внешнее имя объекта.Вот почему переименование таблицы приводит к тому, что все внешние ключи «автоматически» ссылаются на новое имя таблицы - ограничение внешнего ключа по-прежнему ссылается на тот же идентификатор объекта, что и до переименования.Если вы создали «новую» таблицу и хотите, чтобы внешние ключи ссылались на «новую» таблицу, вам нужно создать новый внешний ключ, ссылающийся на «новую» таблицу.

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