2016-06-30 3 views
2

Проблема: Я пытаюсь создать внешний ключ в столбце для представления. Представление было сделано как SELECT * из другой схемы с ограничением первичного ключа в столбце, который я использую.Создать внешний ключ для просмотра

Возможно ли это? Если это так, считается ли это плохой практикой? Если это не так, есть ли альтернатива? Это не представляется возможным с помощью phpmyadmin, и я не могу создать первичный ключ в представлении.

Причина, почему: я использовал две схемы для двух различных приложений, но есть «пользователь» таблица (не обязательно пользователей в таблице mysql.user) в одной схеме, что я хотел бы повторно использовать в схеме без предоставление разрешения другой схеме. Вот почему я использовал представление.

ответ

1

Нет. Это невозможно.

См. MySQL Forums post.

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

Просмотров материализуются. Это не таблицы с левыми индексами на них. Представления также являются моментальными снимками во времени (время создания). Они могут выпасть из милости текущей схемы, без ведома, пока не будут использованы в следующий раз. Таким образом, по многим причинам они не будут кандидатами на использование FK в качестве target, , на которые ссылаются, как они его называют.

Из Руководства Страницы FAQ: Views

После цели был создан, можно удалить или изменить таблицу или представление, к которому определение относится. Чтобы проверить определение вида для таких проблем, используйте инструкцию CHECK TABLE.

Дополнительная причина, по которой представление является снимком, как я его называю. Его действительность в любой момент времени может стать весьма скомпрометированной. Не FK ссылка кандидат.

+1

Независимо от педантичных разногласий, это единственный ответ на ваш вопрос. – Drew

+0

Извинения, я не понял, что все представления в MySQL были «моментальными снимками» до дальнейшего исследования. Я исхожу из базы данных Oracle DB. – Mocking

0

Вместо использования представления вы можете создать другую (общую) схему и переместить таблицы на это. Это делает так, что вы можете повторно использовать таблицы без предоставления разрешений на одну таблицу для ограниченных схем. Как и @Drew, невозможно создать ограничение внешнего ключа для представления, так как вы не можете создать индекс в представлении.

Смежные вопросы