Вы могли сохранить события как повторение, и если конкретный экземпляр был отредактирован, создайте новое событие с тем же идентификатором события. Тогда при поиске события, ищите все события с тем же идентификатором события для получения всей информации. Я не уверен, прокрутили ли Вы свою собственную библиотеку события, или если Вы используете существующий, таким образом, это не может быть возможно.
Используя предпочтительную нотацию JOIN:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t
JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
WHERE t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;
или устаревшую нотацию соединения-в-where-clause:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t, "informix".syscolumns AS c
WHERE t.tabid = c.tabid
AND t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;
Предполагая, что вы используете достаточно последнюю версию IDS, вы можете заказать по столбцам, не указанным в списке выбора. Если вы получаете жалобы, добавьте столбцы упорядочивания в список выбора.
Критерий соединения очевиден; tabtype = 'T' перечисляет только таблицы, но не представления, синонимы и другие подобные элементы, перечисленные в systables; tabid> = 100 перечисляет только таблицы, созданные явно в базе данных, а не в системном каталоге.
Это не включает информацию о типе - если вы этого хотите, вам нужно проделать немного больше работы. Вы найдете файл $ INFORMIXDIR / etc / xpg4_is.sql
, который содержит грубое приближение к старой версии информационной схемы XPG4 (стандарт X / Open) (отсюда и название файла). Там, существуют функции и т. д. для декодирования информации о типе из syscolumns.coltype
и syscolumns.collength
в узнаваемые строки. Однако я сильно подозреваю, что он не обрабатывает типы DISTINCT или другие типы, определяемые пользователем. Я буду рад, если я ошибаюсь, но ... Если вы добавите соответствующие части этого файла в свою базу данных, вы также сможете получить информацию о типе.
Также обратите внимание, что все команды INFO в ISQL и DB-Access моделируются во внешнем интерфейсе, а не выполняются на сервере IDS. По сути, программы принимают запрос и преобразуют его в более сложный оператор SQL. См. Код в файле sqlinfo.ec
, который является частью SQLCMD (доступен в Архиве программного обеспечения IIUG ), чтобы узнать, как моя программа SQLCMD обрабатывает операторы INFO. (Запись:
Использовать таблицу syscolumns. Такая информация описана в IBM Informix Guide to SQL
. Я сделал простые утилиты Python, которые показывают информацию о схеме для Informix , Oracle и PostgreSQL . Они полезны, если вам нужно сравнить базы данных.