Добавление атрибутов метаданных в таблицу MySQL - PullRequest
8 голосов
/ 18 марта 2010

Я хотел бы добавить пользовательские атрибуты в таблицу MySQL, которые я могу прочитать по php.

Эти атрибуты не должны вмешиваться в саму таблицу - они в основном доступны php-кодом во время генерации кода, и эти атрибуты ДОЛЖНЫ находиться в самой БД.

Нечто похожее по концепции на отражение .NET.

MySQL поддерживает что-то подобное?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 18 марта 2010

Когда вы CREATE или ALTER таблицы, вы можете добавить COMMENTS - один для таблицы в целом и один для каждого столбца. Чтобы получить эти комментарии, вы можете запросить базу данных INFORMATION_SCHEMA, в частности столбцы INFORMATION_SCHEMA.COLUMNS.COLUMNS_COMMENT и INFORMATION_SCHEMA.TABLE.TABLE_COMMENTS. INFORMATION_SCHEMA предоставляет множество метаданных о ваших базах данных, включая данные, предоставленные операторами DESCRIBE. Любой пользователь, у которого есть доступ на чтение к определенной таблице или столбцу, может прочитать соответствующие метаданные из INFORMATION_SCHEMA, но не может прочитать метаданные о таблицах, к которым у него нет доступа на чтение.

Кажется естественным хранить ваши пользовательские метаданные в INFORMATION_SCHEMA, но это не так гибко, как вам может понадобиться, потому что вы можете хранить только один COMMENT на столбец. Если это ограничивает ваши цели или вам необходимо регулярно обновлять данные, следуйте @Dark Falcon и создайте дополнительную таблицу.

1 голос
/ 18 марта 2010

Какие атрибуты? Поскольку вы упоминаете рефлексию, я предполагаю, что вы пытаетесь что-то выяснить в структуре таблицы? Вы поняли, что команды, которые говорят вам о структуре таблицы, являются SQL и возвращают свои результаты, как любой другой запрос? Это позволяет вам программно обрабатывать результаты, например, DESCRIBE TABLE. Это то, что вы ищете?

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