Грубер Мартин
Шрифт:
Для иллюстрации процедуры предложенной в начале этого раздела, имеется способ, позволяющий каждому пользователю видеть информацию SYSTEMCOLUMNS только для принадлежащих ему таблиц:
CREATE VIEW Owncolumns
AS SELECT *
FROM SYSTEMCOLUMNS
WHERE tabowner=USER;
GRANT SELECT ON Owncolumns TO PUBLIC;
Большинство версий SQL, позволяют вам помещать комментарии(ремарки) в специальные столбцы пояснений таблиц каталогов SYSTEMCATALOG и SYSTEMCOLUMNS, что удобно, так как эти таблицы не всегда могут объяснить свое содержание. Для простоты, мы пока исключали этот столбец из наших иллюстраций.
Можно использовать команду COMMENT ON со строкой текста, чтобы пояснить любую строку в одной из этих таблиц. Состояние - TABLE, для комментирования в SYSTEMCATALOG, и текст - COLUMN, для SYSTEMCOLUMNS.
Например:
COMMENT ON TABLE Chris.Orders
IS 'Current Customer Orders';
Текст будет помещен в столбец пояснений SYSTEMCATALOG. Обычно, максимальная длина таких пояснений - 254 символов.
Сам комментарий, указывается для конкретной строки, одна с tname=Orders, а другая owner=Chris. Мы увидим этот комментарий в строке для таблицы Порядков в SYSTEMCATALOG:
SELECT tname, remarks
FROM SYSTEMCATALOG
WHERE tname='Orders'
AND owner='Chris';
Вывод для этого запроса показывается в Таблица 24.2.
SYSTEMCOLUMNS работает точно так же. Сначала, мы создаем комментарий
COMMENT ON COLUMN Orders.onum
IS 'Order #';
затем выбираем эту строку из SYSTEMCOLUMNS:
SELECT cnumber, datatype, cname, remarks
FROM SYSTEMCOLUMNS
WHERE tname='Orders'
AND tabowner='Chris'
AND cname=onum;
Вывод для этого запроса показывается в Таблице 24.3.
Чтобы изменить комментарий, вы можете просто ввести новую команду COMMENT ON для той же строки. Новый комментарий будет записан поверх старого. Если вы хотите удалить комментарий, напишите поверх него пустой комментарий, подобно следующему:
COMMENT ON COLUMN Orders.onum
IS ";
и этот пустой комментарий затрет предыдущий.
SELECT tname, remarks FROM SYSTEMCATALOG
WHERE tname='Orders' AND owner='Chris'
tname | remarks |
Orders | Current Customers Orders |
Таблица 24.2: Коментарий в SYSTEMCATALOG
SELECT cnumber, datatype, cname, remarks
FROM SYSTEMCOLUMNS WHERE tname='Orders' AND tabowner='Chris'
AND cname='onum'
cnumber | datatype | cname | remarks |
1 | integer | onum | Orders # |
Таблица 24.3: Коментарий в SYSTEMCOLUMNS
Здесь показаны оставшиеся из ващих системных таблиц определения, с типовым запросом для каждого:
SYSTEMINDEXES - ИНДЕКСАЦИЯ В БАЗЕ ДАННЫХ
Имена столбцов в таблице SYSTEMINDEXES и их описания - следующие:
СТОЛБЦЫ | ОПИСАНИЕ |
iname | Имя индекса (используемого для его исключения ) |
iowner | Имя пользователя который создал индекс |
tname | Имя таблицы которая содержит индекс |
cnumber | Номер столбца в таблице |
tabowner | Пользователь который владеет таблицей содержащей индекс |
numcolumns | Число столбцов в индексе |
cposition | Позиция текущего столбца среди набора индексов |
isunique | Уникален ли индекс (Y или N ) |
Индекс считается неуникальным, если он вызывает продавца, в snum столбце таблицы Заказчиков:
SELECT iname, iowner, tname, cnumber, isunique
FROM SYSTEMINDEXES
WHERE iname='salesperson';
Вывод для этого запроса показывается в Таблице 24.4.
SELECT iname, iowner, tname, cnumber, isunique
FROM SYSTEMINDEXES WHERE iname='salespeople';