2013-05-11 7 views
1

Я пытаюсь создать некоторые метаданные для расширения функциональности mysql, но я не могу создать таблицы в базе данных INFORMATION_SCHEMA. Я подумал, что могу просто создать другую базу данных и иметь там свои метаданные, но мне нужны внешние ключи из моих таблиц в некоторые таблицы в базе данных INFORMATION_SCHEMA. Тем не менее, я получаю ошибки при попытке их создания. Затем я подумал, что могу создать триггер, чтобы получать уведомления об изменениях, но поскольку триггеры связаны с таблицей, и я не могу изменить эту базу данных, я тоже не могу создавать триггеры.Как изменить INFORMATION_SCHEMA или добавить к нему триггеры или внешние ключи?

В частности, у меня есть некоторые таблицы, которые ссылаются на information_schema.schemata(schema_name) и на information_schema.schemata(columns) и некоторые другие. Я хочу иметь этот внешний ключ, поэтому я могу использовать ON UPDATE CASCADE ON DELETE CASCADE или иначе у меня будет несколько строк в моих таблицах, ссылающихся на ничего, и я не могу этого допускать.

Я использую mariaDB 5.5.30, который использует MySql 5.3.

+0

Интересно, будет ли реализован материализованный вид на представление. Чем вы могли бы создать индексы/ключи от материализованного представления ... – xQbert

ответ

2

Таблицы INFORMATION_SCHEMA - это фактически виды, содержимое которых автоматически поддерживается сервером MySQL.

The manual gives more information:

Внутри INFORMATION_SCHEMA есть несколько только для чтения таблицы. Они являются фактически видами, а не базовыми таблицами, поэтому с ними не связаны файлы , и вы не можете установить триггеры на них. Кроме того, нет каталога с этим именем.

Хотя вы можете выбрать INFORMATION_SCHEMA в качестве базы данных по умолчанию с USE заявление, вы можете прочитать только содержимое таблиц, не выполнить INSERT, UPDATE или DELETE операции над ними.

+0

Спасибо за эту информацию. Вы знаете, как я могу «наблюдать», когда что-то меняется в этих представлениях? –

+0

Думаю, вам нужно добавить триггеры к реальным таблицам, которые вы хотите контролировать, поскольку таблицы INFORMATION_SCHEMA не принимают триггеры. – Jocelyn

1

Это не виды, а временные таблицы, поэтому вы не видите папки. показать создавать виды просмотров; ОШИБКА 1347 (HY000): 'information_schema./tmp/#sql_2ac_0' не ПРОСМОТРЕТЬ