ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# COMMENT ## Name COMMENT -- 定义或者改变一个对象的注释 ## Synopsis ``` COMMENT ON { AGGREGATE _agg_name_ (_agg_type_ [, ...] ) | CAST (_source_type_ AS _target_type_) | COLLATION _object_name_ | COLUMN _relation_name_._column_name_ | CONSTRAINT _constraint_name_ ON _table_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_ | [ PROCEDURAL ] LANGUAGE _object_name_ | ROLE _object_name_ | RULE _rule_name_ ON _table_name_ | SCHEMA _object_name_ | SEQUENCE _object_name_ | SERVER _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_ | TRIGGER _trigger_name_ ON _table_name_ | TYPE _object_name_ | VIEW _object_name_ } IS '_text_' ``` ## 描述 `COMMENT`存储一个数据库对象的注释。 每个对象只存储一条注释,因此要修改一个注释,对同一个对象发出一条新的`COMMENT`命令即可。 要删除注释,在文本字符串的位置写上`NULL`即可。 当删除对象时,注释自动被删除掉。 对大多数对象,只有对象的所有者可以设置注释。角色没有所有者,所以`COMMENT ON ROLE`命令仅可以由超级用户对超级用户角色执行, 有`CREATEROLE`权限的角色也可以为非超级用户角色设置注释,当然超级用户可以对所有对象进行注释。 注释可以用psql程序中的`\d`命令检索。 其它希望提取注释的用户接口设计可以使用程序psql使用的同样的内置函数`obj_description`、`col_description`和`shobj_description`(参见[Table 9-55](#calibre_link-1613))。 ## 参数 `_object_name_``_relation_name_`.`_column_name_` `_agg_name_` `_constraint_name_` `_function_name_` `_operator_name_` `_rule_name_` `_trigger_name_` 要加入注释的对象名称。表、聚集、排序规则、编码转换、域、外部表、函数、索引、操作符、操作符类、操作符系列、序列、全文搜索对象 、类型、视图,名字可以有模式修饰。 当对一个字段进行注释时,`_relation_name_`必需是针对一个表、视图、复合类型或是外部表。 `_agg_type_` 聚集函数操作的输入参数类型,要引用一个零参数聚集函数,可以使用`*`代替输入数据类型列表。 `_source_type_` 类型转换的源数据类型 。 `_target_type_` 类型转换的目标数据类型 。 `_argmode_` 函数参数的模式:`IN`、`OUT`、`INOUT`或`VARIADIC`。如果省略,缺省值是`IN`。 请注意`COMMENT ON FUNCTION`实际上不会使用`OUT`参数, 因为只要有输入参数就可以判断函数的身份了。 因此,只要列出`IN`、`INOUT`和`VARIADIC`参数就足够了。 `_argname_` 函数参数的名字。请注意`COMMENT ON FUNCTION`实际上并不使用参数名,因为只要有参数的数据类型就可以判断函数的身份。 `_argtype_` 如果有的话,是函数参数的数据类型(可以用模式修饰) `_large_object_oid_` 大对象的OID 。 `_left_type_` `_right_type_` 操作符参数的数据类型(可以用模式修饰)。 当前置或后置操作符不存在时,可以增加`NONE`选项。 `PROCEDURAL` 这个选项没有任何用处。 `_text_` 新的注释,以字符串文本的方式写;如果是`NULL`则删除注释。 ## 注意 目前注释浏览没有安全机制:任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。 共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何数据库的任何用户都可以看到它们。 因此,不要在注释里存放与安全有关的敏感信息。 ## 例子 给表`mytable`加注释: ``` COMMENT ON TABLE mytable IS 'This is my table.'; ``` 再删除注释: ``` COMMENT ON TABLE mytable IS NULL; ``` 其它一些例子: ``` 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 DATABASE my_database IS 'Development Database'; COMMENT ON DOMAIN my_domain IS 'Email Address Domain'; 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 ROLE my_role IS 'Administration group for finance tables'; 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 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 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`命令。