COMMENT#
COMMENT
COMMENT — определить или изменить комментарий объекта
Синтаксис
COMMENT ON { ACCESS METHODobject_name
| AGGREGATEaggregate_name
(aggregate_signature
) | CAST (source_type
AStarget_type
) | COLLATIONobject_name
| COLUMNrelation_name
.column_name
| CONSTRAINTconstraint_name
ONtable_name
| CONSTRAINTconstraint_name
ON DOMAINdomain_name
| CONVERSIONobject_name
| DATABASEobject_name
| DOMAINobject_name
| EXTENSIONobject_name
| EVENT TRIGGERobject_name
| FOREIGN DATA WRAPPERobject_name
| FOREIGN TABLEobject_name
| FUNCTIONfunction_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | INDEXobject_name
| LARGE OBJECTlarge_object_oid
| MATERIALIZED VIEWobject_name
| OPERATORoperator_name
(left_type
,right_type
) | OPERATOR CLASSobject_name
USINGindex_method
| OPERATOR FAMILYobject_name
USINGindex_method
| POLICYpolicy_name
ONtable_name
| [ PROCEDURAL ] LANGUAGEobject_name
| PROCEDUREprocedure_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | PUBLICATIONobject_name
| ROLEobject_name
| ROUTINEroutine_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | RULErule_name
ONtable_name
| SCHEMAobject_name
| SEQUENCEobject_name
| SERVERobject_name
| STATISTICSobject_name
| SUBSCRIPTIONobject_name
| TABLEobject_name
| TABLESPACEobject_name
| TEXT SEARCH CONFIGURATIONobject_name
| TEXT SEARCH DICTIONARYobject_name
| TEXT SEARCH PARSERobject_name
| TEXT SEARCH TEMPLATEobject_name
| TRANSFORM FORtype_name
LANGUAGElang_name
| TRIGGERtrigger_name
ONtable_name
| TYPEobject_name
| VIEWobject_name
} IS {string_literal
| NULL } whereaggregate_signature
is: * | [argmode
] [argname
]argtype
[ , ... ] | [ [argmode
] [argname
]argtype
[ , ... ] ] ORDER BY [argmode
] [argname
]argtype
[ , ... ]
Описание
COMMENT
хранит комментарий о объекте базы данных.
Для каждого объекта хранится только одна строка комментария, поэтому для изменения комментария
выдайте новую команду COMMENT
для того же объекта. Чтобы удалить
комментарий, вместо текстовой строки напишите NULL
.
Комментарии автоматически удаляются при удалении связанного с ними объекта.
Возникает блокировка SHARE UPDATE EXCLUSIVE
на объекте, к которому будет добавлен комментарий.
Для большинства видов объектов только владелец объекта может установить комментарий.
Роли не имеют владельцев, поэтому правило для COMMENT ON ROLE
заключается в том, что вы должны быть суперпользователем, чтобы комментировать роль суперпользователя, или иметь привилегию CREATEROLE
и быть наделенным
ADMIN OPTION
для целевой роли.
Точно так же методы доступа не имеют владельцев; вы должны быть суперпользователем, чтобы комментировать метод доступа.
Конечно, суперпользователь может комментировать что угодно.
Комментарии можно просмотреть с помощью команды psql \d
.
Другие пользовательские интерфейсы для получения комментариев могут быть построены на основе тех же встроенных функций, которые использует psql, а именно
obj_description
, col_description
,
и shobj_description
(см. Таблица 9.78).
Параметры
object_name
relation_name
.column_name
aggregate_name
constraint_name
function_name
operator_name
policy_name
procedure_name
routine_name
rule_name
trigger_name
Имя объекта, который требуется прокомментировать. Имена объектов, находящихся в схемах (таблицы, функции и т. д.), можно указать с указанием схемы. При комментировании столбца
relation_name
должно ссылаться на таблицу, представление, составной тип или внешнюю таблицу.table_name
domain_name
При создании комментария к ограничению, триггеру, правилу или политике эти параметры указывают имя таблицы или домена, на котором определен данный объект.
source_type
Имя исходного типа данных приведения.
target_type
Имя целевого типа данных приведения.
argmode
Режим аргумента функции, процедуры или агрегата:
IN
,OUT
,INOUT
илиVARIADIC
. Если не указано, по умолчанию используетсяIN
. Обратите внимание, что командаCOMMENT
на самом деле не обращает внимания на аргументыOUT
, поскольку только входные аргументы необходимы для определения идентификатора функции. Поэтому достаточно перечислить аргументыIN
,INOUT
иVARIADIC
.argname
Имя функции, процедуры или аргумента агрегата. Обратите внимание, что
COMMENT
на самом деле не обращает внимания на имена аргументов, поскольку для определения идентификатора функции требуются только типы данных аргументов.argtype
Тип данных аргумента функции, процедуры или агрегата.
large_object_oid
OID большого объекта.
left_type
right_type
Тип(ы) данных аргументов оператора (опционально с указанием схемы). Для отсутствующего аргумента префиксного оператора используйте
NONE
.PROCEDURAL
Это шумовое слово.
type_name
Имя типа данных преобразования.
lang_name
Имя языка преобразования.
string_literal
Новое содержимое комментария, записанное как строковый литерал.
NULL
Запишите
NULL
, чтобы удалить комментарий.
Примечания
В настоящее время не существует механизма безопасности для просмотра комментариев: любой пользователь, подключенный к базе данных, может видеть все комментарии к объектам в этой базе данных. Для общих объектов, таких как базы данных, роли и табличные пространства, комментарии хранятся глобально, поэтому любой пользователь, подключенный к любой базе данных в кластере, может видеть все комментарии для общих объектов. Поэтому не размещайте в комментариях информацию, касающуюся безопасности.
Примеры
Прикрепите комментарий к таблице mytable
:
COMMENT ON TABLE mytable IS 'This is my table.';
Удалите его снова:
COMMENT ON TABLE mytable IS NULL;
Несколько дополнительных примеров:
COMMENT ON ACCESS METHOD gin IS 'GIN index access method'; COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Computes sample variance'; COMMENT ON CAST (text AS int4) IS 'Allow casts from text to int4'; COMMENT ON COLLATION "fr_CA" IS 'Canadian French'; COMMENT ON COLUMN my_table.my_column IS 'Employee ID number'; COMMENT ON CONVERSION my_conv IS 'Conversion to UTF8'; COMMENT ON CONSTRAINT bar_col_cons ON bar IS 'Constrains column col'; COMMENT ON CONSTRAINT dom_col_constr ON DOMAIN dom IS 'Constrains col of domain'; COMMENT ON DATABASE my_database IS 'Development Database'; COMMENT ON DOMAIN my_domain IS 'Email Address Domain'; COMMENT ON EVENT TRIGGER abort_ddl IS 'Aborts all DDL commands'; COMMENT ON EXTENSION hstore IS 'implements the hstore data type'; COMMENT ON FOREIGN DATA WRAPPER mywrapper IS 'my foreign data wrapper'; COMMENT ON FOREIGN TABLE my_foreign_table IS 'Employee Information in other database'; COMMENT ON FUNCTION my_function (timestamp) IS 'Returns Roman Numeral'; COMMENT ON INDEX my_index IS 'Enforces uniqueness on employee ID'; COMMENT ON LANGUAGE plpython IS 'Python support for stored procedures'; COMMENT ON LARGE OBJECT 346344 IS 'Planning document'; COMMENT ON MATERIALIZED VIEW my_matview IS 'Summary of order history'; COMMENT ON OPERATOR ^ (text, text) IS 'Performs intersection of two texts'; COMMENT ON OPERATOR - (NONE, integer) IS 'Unary minus'; COMMENT ON OPERATOR CLASS int4ops USING btree IS '4 byte integer operators for btrees'; COMMENT ON OPERATOR FAMILY integer_ops USING btree IS 'all integer operators for btrees'; COMMENT ON POLICY my_policy ON mytable IS 'Filter rows by users'; COMMENT ON PROCEDURE my_proc (integer, integer) IS 'Runs a report'; COMMENT ON PUBLICATION alltables IS 'Publishes all operations on all tables'; COMMENT ON ROLE my_role IS 'Administration group for finance tables'; COMMENT ON ROUTINE my_routine (integer, integer) IS 'Runs a routine (which is a function or procedure)'; COMMENT ON RULE my_rule ON my_table IS 'Logs updates of employee records'; COMMENT ON SCHEMA my_schema IS 'Departmental data'; COMMENT ON SEQUENCE my_sequence IS 'Used to generate primary keys'; COMMENT ON SERVER myserver IS 'my foreign server'; COMMENT ON STATISTICS my_statistics IS 'Improves planner row estimations'; COMMENT ON SUBSCRIPTION alltables IS 'Subscription for all operations on all tables'; COMMENT ON TABLE my_schema.my_table IS 'Employee Information'; COMMENT ON TABLESPACE my_tablespace IS 'Tablespace for indexes'; COMMENT ON TEXT SEARCH CONFIGURATION my_config IS 'Special word filtering'; COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Snowball stemmer for Swedish language'; COMMENT ON TEXT SEARCH PARSER my_parser IS 'Splits text into words'; COMMENT ON TEXT SEARCH TEMPLATE snowball IS 'Snowball stemmer'; COMMENT ON TRANSFORM FOR hstore LANGUAGE plpython3u IS 'Transform between hstore and Python dict'; COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI'; COMMENT ON TYPE complex IS 'Complex number data type'; COMMENT ON VIEW my_view IS 'View of departmental costs';
Совместимость
В стандарте SQL нет команды COMMENT
.