О INFORMATION_SCHEMA
INFORMATION_SCHEMA
определяется стандартом SQL. Таким образом, при правильной реализации он должен быть согласованным для всех баз данных ( Postgres , MySQL и т. Д.).
В таблицах COLUMNS
следующие четыре поля вместе будут однозначно идентифицировать каждый столбец-сущность.
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
INFORMATION_SCHEMA
- это шпон, накладывающийся на фактическую таблицу базы данных , используемую для отслеживания метаданных. Возможно, вам удастся получить более подробную информацию об этих метаданных, сделав запрос непосредственно к этим таблицам. Например, в Postgres см. Системные каталоги . Конечно, это означает, что вы должны исследовать и писать запросы отдельно для каждой реализации базы данных (Postgres, MySQL и т. Д.).
Обратите внимание, что некоторые системы баз данных поддерживают INFORMATION_SCHEMA
, а некоторые нет. Смотрите на этой странице Википедии список.
Активный мониторинг
Что касается мониторинга изменений в этих метаданных, я не знаю ни одного стандартного способа сделать это.
Я подозреваю, что для активного мониторинга за добавлением, обновлением и удалением этих метаданных потребуется написать код, специфичный для каждой системы базы данных.
На ум приходят две идеи, но ни одна из них не является стандартной:
- Запросите исходные базовые аналоги для их значений столбцов уникального идентификатора, соберите эти идентификаторы, сохраните текущее состояние таблиц и столбцов, которые вас интересуют. Затем периодически запрашивайте эти идентификаторы для сравнения с вашими постоянными данными, чтобы увидеть, что соответствует и что изменилось.
- Присоедините триггер либо к
INFORMATION_SCHEMA
таблицам (вероятно, это невозможно), либо к их собственным базовым аналогам. Запишите код триггера для вставки строк в таблицу истории / регистрации или запись в журнал.