Создать представление, которое еще не создано - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть инструмент извлечения схемы для SQL & Oracle, который затем пытается создать новую базу данных из схемы другой.

Я столкнулся с проблемой с SQL на данный момент (скорее всего, существует в Oracle), когда он пытается сделать что-то вроде

CREATE VIEW TestView
SELECT * FROM AnotherViewNotCreated

это ошибки.

Я думал, что использование команды EXEC в SQL будет работать, но также жалуется, что представление не существует.

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

ОБНОВЛЕНИЕ: Я заметил, что если вы генерируете сценарии из SQL, он выводит порядок создания представления в порядке, который, по-видимому, предполагает, что он знает, какие из них должны быть созданы первыми, чтобы предотвратить проблемы со ссылками. Интересно, откуда это знать?

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Как вы можете создать представление, если оно вызывает представление, которое еще не существует?Вам просто нужно запускать сценарии в порядке зависимости.

Я бы не рекомендовал использовать представления, которые вызывают другие представления из соображений производительности.Мы чуть не потеряли многомиллионный клиент, потому что некоторые разработчики приложений думали, что это хорошая идея.Он работал нормально, пока не было большого количества данных, а затем система замедлилась до ползания.Представления, которые вызывают другие представления, особенно когда они опускаются более чем на один уровень, могут быть особенно трудными для устранения неполадок и обслуживания.Я бы действительно подумал, хорошая ли это идея.

1 голос
/ 07 апреля 2011

Не думаю, что ты можешь. Этот поток предлагает вам сначала "подделать" таблицу, что может сработать для вас, но вам может понадобиться пересоздать зависимое представление, когда реальное доступно.

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