COMMENT

定义或更改对象的注释。

概要

COMMENT ON
{ ACCESS METHOD <object_name> |
  AGGREGATE <aggregate_name> (<aggregate_signature>) |
  CAST (<source_type> AS <target_type>) |
  COLLATION <object_name>
  COLUMN <relation_name>.<column_name> |
  CONSTRAINT <constraint_name> ON <table_name> |
  CONSTRAINT <constraint_name> ON DOMAIN <domain_name> |
  CONVERSION <object_name> |
  DATABASE <object_name> |
  DOMAIN <object_name> |
  EVENT TRIGGER <object_name> |
  EXTENSION <object_name> |
  FOREIGN DATA WRAPPER <object_name> |
  FOREIGN TABLE <object_name> |
  FUNCTION <function_name> [([[<argmode>] [<argname>] <argtype> [, ...]])] |
  INDEX <object_name> |
  MATERIALIZED VIEW <object_name> |
  OPERATOR <operator_name> (<left_type>, <right_type>) |
  OPERATOR CLASS <object_name> USING <index_method> |
  OPERATOR FAMILY <object_name> USING <index_method> |
  POLICY <policy_name> ON <table_name> |
  [PROCEDURAL] LANGUAGE <object_name> |
  PROCEDURE <procedure_name> [([[<argmode>] [<argname>] <argtype> [, ...]])] |
  RESOURCE GROUP <object_name> |
  RESOURCE QUEUE <object_name> |
  ROLE <object_name |
  ROUTINE <routine_name> [([[<argmode>] [<argname>] <argtype> [, ...]])] |
  RULE <rule_name> ON <table_name> |
  SCHEMA <object_name> |
  SEQUENCE <object_name> |
  SERVER <object_name> |
  STATISTICS <object_name> |
  TABLE <object_name> |
  TABLESPACE <object_name> |
  TEXT SEARCH CONFIGURATION <object_name> |
  TEXT SEARCH DICTIONARY <object_name> |
  TEXT SEARCH PARSER <object_name> |
  TEXT SEARCH TEMPLATE <object_name> |
  TRANSFORM FOR <type_name> LANGUAGE <lang_name> |
  TRIGGER <trigger_name> ON <table_name> |
  TYPE <object_name> |
  VIEW <object_name>
} IS { <string_literal> | NULL }

where <aggregate_signature> is:

* |
[ <argmode> ] [ <argname> ] <argtype> [ , ... ] |
[ [ <argmode> ] [ <argname> ] <argtype> [ , ... ] ] ORDER BY [ <argmode> ] [ <argname> ] <argtype> [ , ... ]

描述

COMMENT 命令用于存储数据库对象的注释。每个对象仅存储一条注释字符串,因此若需修改注释,请对同一对象执行新的 COMMENT 命令。若要删除注释,请将文本字符串替换为 NULL。当对象被删除时,其注释将自动清除。

数据库会对待注释对象获取 SHARE UPDATE EXCLUSIVE 锁。

对于大多数对象类型,仅对象所有者可设置注释。角色没有所有者,因此对角色添加注释的规则是:对超级用户角色添加注释需具备超级用户权限,对非超级用户角色添加注释需拥有CREATEROLE特权。同理,访问方法也没有所有者,需超级用户权限才能添加注释。当然,超级用户可对任何对象添加注释。

可通过psql元命令\dd、\d+和\l+查看注释。其他用户界面也可基于psql使用的内置函数obj_description()、col_description()和shobj_description()构建注释检索功能。

参数

  • 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 必须引用表,视图,组合类型或外部表。

注意! YMatrix 数据库不支持触发器。

  • table_name
  • domain_name
    • 当在一个约束、触发器、规则或者策略上创建一段注释时,这些参数指定在其上定义 该对象的表或域的名称。
  • source_type
    • 转换的源数据类型的名称。
  • target_type
    • 转换的目标数据类型名称。
  • argmode
    • 函数或聚合参数的模式:IN、OUT、INOUT 或 VARIADIC。若省略,默认为 IN。请注意,COMMENT 实际上不会关注 OUT 参数,因为仅需输入参数即可确定函数的身份。列出 IN、INOUT 和 VARIADIC 参数即可。
  • argname
    • 一个函数或者聚集参数的名称。注意 COMMENT并不真正关心参数名称, 因为决定函数的身份只需要参数数据类型。
  • argtype
    • 一个函数或者聚集参数的数据类型。
  • left_type
  • right_type
    • 操作符的参数的数据类型(可以是模式限定的)。对一个前缀后后缀操作符 的缺失参数可以写NONE。operator.
  • 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 cancel_ddl IS 'Cancels all DLL 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 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 int4_ops 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 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 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 plpythonu 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 命令。