9.3 9.4 9.5 9.6 10 11 12 13 14 15
阿里云PostgreSQL 问题报告 纠错本页面

COMMENT

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 |
  EXTENSION object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  INDEX object_name |
  LARGE OBJECT large_object_oid |
  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 [, ...] ] ) ] |
  PUBLICATION 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 |
  SUBSCRIPTION 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锁定。

对大部分类型的对象,只有对象的拥有者可以设置注释。角色没有拥有者,因此 COMMENT ON ROLE的规则是你必须作为一个超级用户来对一个 超级用户角色设置注释,或者具有CREATEROLE特权来对非超级用 户角色设置注释。同样的,访问方法也没有拥有者,你必须作为一个超级用户来 对一个访问方法设置注释。当然,一个超级用户可以对任何东西设置注释。

使用psql\d 命令家族可以查看注释。其他检索注释的用户接口可以构建在 psql使用的内建函数之上,即 obj_descriptioncol_description 以及shobj_description (见表 9.77)。

参数

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

一个函数,存储过程或者聚集函数的参数的模式:INOUTINOUT或者VARIADIC。 如果被省略,默认值是IN。注意 COMMENT并不真正关心 OUT参数,因为决定函数的身份只需要输入参数。因此 列出ININOUTVARIADIC 参数就足够了。

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;

更多示例:

对GIN索引访问方法的注释为“GIN索引访问方法”;
对my_aggregate(双精度)的聚合函数的注释为“计算样本方差”;
将文本转换为int4的CAST的注释为“允许从文本到int4的转换”;
对“fr_CA”排序规则的注释为“加拿大法语”;
对my_table.my_column列的注释为“员工ID号”;
对my_conv转换的注释为“转换为UTF8”;
对bar表上bar_col_cons列的约束的注释为“约束列col”;
对DOMAIN dom上的dom_col_constr列的约束的注释为“约束域的col”;
对my_database数据库的注释为“开发数据库”;
对my_domain域的注释为“电子邮件地址域”;
对abort_ddl事件触发器的注释为“中止所有DDL命令”;
对hstore扩展的注释为“实现hstore数据类型”;
对mywrapper外部数据包装器的注释为“我的外部数据包装器”;
对my_foreign_table外部表的注释为“其他数据库中的员工信息”;
对my_function函数(时间戳)的注释为“返回罗马数字”;
对my_index索引的注释为“强制员工ID的唯一性”;
对plpython语言的注释为“存储过程的Python支持”;
对大对象346344的注释为“规划文档”;
对my_matview材料化视图的注释为“订单历史的摘要”;
对^(文本,文本)操作符的注释为“执行两个文本的交集”;
对-(NONE,整数)操作符的注释为“一元减”;
对int4ops操作类使用btree的注释为“btrees的4字节整数操作符”;
对integer_ops操作族使用btree的注释为“btrees的所有整数操作符”;
对mytable上my_policy策略的注释为“按用户过滤行”;
对my_proc过程(整数,整数)的注释为“运行报告”;
对alltables发布的注释为“发布所有表上的所有操作”;
对my_role角色的注释为“财务表的管理组”;
对my_routine例程(整数,整数)的注释为“运行例程(即函数或过程)”;
对my_table表上my_rule规则的注释为“记录员工记录的更新”;
对my_schema模式的注释为“部门数据”;
对my_sequence序列的注释为“用于生成主键”;
对myserver服务器的注释为“我的外部服务器”;
对my_statistics统计信息的注释为“改进规划器行估计”;
对alltables订阅的注释为“所有表上的所有操作的订阅”;
对my_schema.my_table表的注释为“员工信息”;
对my_tablespace表空间的注释为“索引的表空间”;
对my_config文本搜索配置的注释为“特殊词过滤”;
对swedish文本搜索词典的注释为“瑞典语的Snowball词干分析器”;
对my_parser文本搜索解析器的注释为“将文本分割成单词”;
对snowball文本搜索模板的注释为“Snowball词干分析器”;
对hstore到Python字典的转换的注释为“hstore和Python字典之间的转换”;
对my_table上my_trigger触发器的注释为“用于RI”;
对复杂数据类型的注释为“复数数据类型”;
对my_view视图的注释为“部门成本视图”;

兼容性

SQL 标准中没有COMMENT命令。