COMMENT
Синтаксис
COMMENT ON
{
AGGREGATE имя_агрегатной_функции ( сигнатура_агр_функции ) |
CAST (исходный_тип AS целевой_тип) |
COLLATION имя_объекта |
COLUMN имя_отношения.имя_колонки |
CONSTRAINT имя_ограничения ON table_name |
CONVERSION имя_объекта |
DATABASE имя_объекта |
DOMAIN имя_объекта |
EXTENSION имя_объекта |
EVENT TRIGGER имя_объекта |
FOREIGN DATA WRAPPER имя_объекта |
FOREIGN TABLE имя_объекта |
FUNCTION имя_функции ( [ [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [, ...] ] ) |
INDEX имя_объекта |
LARGE OBJECT oid_большого_объекта |
MATERIALIZED VIEW имя_объекта |
OPERATOR имя_оператора (тип_слева, тип_справа) |
OPERATOR CLASS имя_объекта USING метод_индекса |
OPERATOR FAMILY имя_объекта USING метод_индекса |
[ PROCEDURAL ] LANGUAGE имя_объекта |
ROLE имя_объекта |
RULE имя_правила ON table_name |
SCHEMA имя_объекта |
SEQUENCE имя_объекта |
SERVER имя_объекта |
TABLE имя_объекта |
TABLESPACE имя_объекта |
TEXT SEARCH CONFIGURATION имя_объекта |
TEXT SEARCH DICTIONARY имя_объекта |
TEXT SEARCH PARSER имя_объекта |
TEXT SEARCH TEMPLATE имя_объекта |
TRIGGER имя_триггера ON table_name |
TYPE имя_объекта |
VIEW имя_объекта
} IS 'текст'
Здесь сигнатура_агр_функции:
* |
[ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ] |
[ [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ] ] ORDER BY [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ]
Описание
COMMENT сохраняет комментарий об объекте базы данных.
Для каждого объекта сохраняется только одна строка, так что для изменения комментария нужно просто выполнить COMMENT ещё раз для того же объекта. Чтобы удалить комментарий, вместо текстовой строки укажите NULL. При удалении объектов комментарии удаляются автоматически.
Для большинства типов объектов комментарий может установить только владелец объекта. Но так как роли не имеют владельцев, COMMENT ON ROLE для ролей суперпользователей разрешено выполнять только суперпользователям, а для обычных ролей — тем, кто имеет право CREATEROLE. Разумеется, суперпользователи могут задавать комментарии для любых объектов.
Просмотреть комментарии можно в psql, используя семейство команд \d. Имеется возможность получать комментарии и в других пользовательских интерфейсах, используя те же встроенные функции, что использует psql, а именно obj_description
, col_description
и shobj_description
(см. Таблицу 9-60).
Параметры
- имя_объекта
имя_отношения.имя_колонки
имя_агрегатной_функции
имя_ограничения
имя_функции
имя_оператора
имя_правила
имя_триггера Имя объекта, для которого задаётся комментарий. Имена таблиц, агрегатных функций, правил сортировки, перекодировок, доменов, сторонних таблиц, функций, индексов, операторов, классов и семейств операторов, последовательностей, объектов текстового поиска, типов и представлений могут быть дополнены именем схемы. При определении комментария для колонки, имя_отношения должно ссылаться на таблицу, представление, составной тип или стороннюю таблицу.
- исходный_тип
Имя исходного типа данных для приведения.
- целевой_тип
Имя целевого типа данных для приведения.
- режим_аргумента
Режим аргумента обычной или агрегатной функции: IN, OUT, INOUT или VARIADIC. По умолчанию подразумевается IN. Заметьте, что COMMENT на самом деле не учитывает аргументы OUT, так как для идентификации функции нужны только типы входных аргументов. Поэтому достаточно перечислить только аргументы IN, INOUT и VARIADIC.
- имя_аргумента
Имя аргумента обычной или агрегатной функции. Заметьте, что на самом деле COMMENT не обращает внимание на имена аргументов, так как для однозначной идентификации функции достаточно только типов аргументов.
- тип_аргумента
Тип данных аргумента обычной или агрегатной функции.
- oid_большого_объекта
OID большого объекта.
- тип_слева
тип_справа Тип данных аргументов оператора (возможно, дополненный именем схемы). В случае отсутствия аргумента префиксного или постфиксного оператора укажите вместо типа NONE.
- PROCEDURAL
Это слово не несёт смысловой нагрузки.
- текст
Новый комментарий, записанный в виде строковой константы (или NULL для удаления комментария).
Замечания
В настоящее время механизм безопасности в части просмотра комментариев отсутствует: любой пользователь, подключённый к базе данных, может видеть все комментарии всех объектов базы. Для общих объектов, таких как базы данных, роли и табличные пространства, комментарии хранятся глобально, так что их может видеть любой пользователь, подключённый к любой базе данных в кластере. Поэтому ничего секретного писать в комментариях не следует.
Примеры
Добавление комментария для таблицы mytable:
COMMENT ON TABLE mytable IS 'Это моя таблица.';
Удаление его:
COMMENT ON TABLE mytable IS NULL;
Ещё несколько примеров:
COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Вычисляет дисперсию выборки'; COMMENT ON CAST (text AS int4) IS 'Выполняет приведение строк к int4'; COMMENT ON COLLATION "fr_CA" IS 'Канадский французский'; COMMENT ON COLUMN my_table.my_column IS 'Порядковый номер сотрудника'; COMMENT ON CONVERSION my_conv IS 'Перекодировка в UTF8'; COMMENT ON CONSTRAINT bar_col_cons ON bar IS 'Ограничение колонки col'; COMMENT ON DATABASE my_database IS 'База данных разработчиков'; COMMENT ON DOMAIN my_domain IS 'Домен почтового адреса'; COMMENT ON EXTENSION hstore IS 'Реализует тип данных hstore'; COMMENT ON FOREIGN DATA WRAPPER mywrapper IS 'моя обёртка сторонних данных'; COMMENT ON FOREIGN TABLE my_foreign_table IS 'Информация о сотрудниках в другой БД'; COMMENT ON FUNCTION my_function (timestamp) IS 'Возвращает число римскими цифрами'; COMMENT ON INDEX my_index IS 'Обеспечивает уникальность по коду сотрудника'; COMMENT ON LANGUAGE plpython IS 'Поддержка Python для хранимых процедур'; COMMENT ON LARGE OBJECT 346344 IS 'Документ планирования'; COMMENT ON MATERIALIZED VIEW my_matview IS 'Сводка истории заказов'; COMMENT ON OPERATOR ^ (text, text) IS 'Вычисляет пересечение двух текстов'; COMMENT ON OPERATOR - (NONE, integer) IS 'Унарный минус'; COMMENT ON OPERATOR CLASS int4ops USING btree IS 'Операторы для четырёхбайтовых целых (для B-деревьев)'; COMMENT ON OPERATOR FAMILY integer_ops USING btree IS 'Все целочисленные операторы (для B-деревьев)'; COMMENT ON ROLE my_role IS 'Административная группа для таблиц бухгалтерии'; COMMENT ON RULE my_rule ON my_table IS 'Протоколирует изменения в записях сотрудников'; COMMENT ON SCHEMA my_schema IS 'Данные отдела'; COMMENT ON SEQUENCE my_sequence IS 'Предназначена для генерации первичных ключей'; COMMENT ON SERVER myserver IS 'Мой сторонний сервер'; COMMENT ON TABLE my_schema.my_table IS 'Данные сотрудников'; COMMENT ON TABLESPACE my_tablespace IS 'Табличное пространство для индексов'; COMMENT ON TEXT SEARCH CONFIGURATION my_config IS 'Фильтрация специальных слов'; COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Стеммер Snowball для шведского языка'; COMMENT ON TEXT SEARCH PARSER my_parser IS 'Разделяет текст на слова'; COMMENT ON TEXT SEARCH TEMPLATE snowball IS 'Стеммер Snowball'; COMMENT ON TRIGGER my_trigger ON my_table IS 'Обеспечивает ссылочную целостность'; COMMENT ON TYPE complex IS 'Тип данных комплексных чисел'; COMMENT ON VIEW my_view IS 'Представление расходов по отделам';
Пред. | Начало | След. |
CLUSTER | Уровень выше | COMMIT |