Oracle вручную добавляет ограничение FK - PullRequest
0 голосов
/ 06 мая 2010

Хорошо, так как клиент хочет автоматизировать определенный процесс, который включает в себя создание новой структуры ключей в базе данных LIVE, мне нужно создать отношения между tables.columns. Теперь я нашел таблицы ALL_CONS_COLS и USER_CONSTRAINTS для хранения информации об ограничениях. Если бы мне пришлось создавать ограничения вручную, вставляя в эти таблицы, я мог бы воссоздать исходные ограничения. Мой вопрос: есть ли еще таблицы, которые я должен изучить? У вас есть альтернативные предложения, так как это звучит ОЧЕНЬ грязно и подвержено ошибкам.

Текущий способ работы:

  • Создать новый столбец в каждой таблице для ПК;

  • Создать подсказку для этого ПК;

  • Создать новый столбец в каждой таблице для ФК;

  • Выбрать направляющую, связанную с
    FK;

....... сделано софар ......

  • Добавить новое ограничение на основе старого
    один;

  • Удалить старое ограничение;

  • Переименовать новые столбцы;

Это довольно хитроумно, и я бы лучше поменял свой метод, любые идеи были бы полезны.

Другими словами, клиент хочет изменить структуру ключа с int на guid в действующей базе данных. Как лучше всего подойти к этому

1 Ответ

4 голосов
/ 06 мая 2010

Прежде всего, вы не создаете / модифицируете / удаляете ограничения, связываясь со словарем данных, но с обычным синтаксисом ALTER TABLE t ADD / MODIFY / DROP CONSTRAINT.

В вашем сценарии, я думаю, вы должны использовать следующий сценарий:

1) Убедитесь, что никто не изменяет данные во время этой операции

2) Сначала удалите старые ограничения внешнего ключа, чтобы избежать конфликта имен с новыми ограничениями.

3) Удалить старые ограничения первичного ключа

4) Создать новые ограничения первичного ключа для столбцов guid

5) Создать новые ограничения внешнего ключа

И тогда все готово.

С уважением, Роб.

...