<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >COMMENT</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="SQL Commands" HREF="sql-commands.html"><LINK REL="PREVIOUS" TITLE="CLUSTER" HREF="sql-cluster.html"><LINK REL="NEXT" TITLE="COMMIT" HREF="sql-commit.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="REFENTRY" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="sql-cluster.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="sql-cluster.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="sql-commit.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="sql-commit.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SQL-COMMENT" ></A >COMMENT</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN38043" ></A ><H2 >Name</H2 >COMMENT -- define or change the comment of an object</DIV ><A NAME="AEN38046" ></A ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN38048" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" >COMMENT ON { TABLE <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | COLUMN <TT CLASS="REPLACEABLE" ><I >table_name</I ></TT >.<TT CLASS="REPLACEABLE" ><I >column_name</I ></TT > | AGGREGATE <TT CLASS="REPLACEABLE" ><I >agg_name</I ></TT > (<TT CLASS="REPLACEABLE" ><I >agg_type</I ></TT >) | CAST (<TT CLASS="REPLACEABLE" ><I >sourcetype</I ></TT > AS <TT CLASS="REPLACEABLE" ><I >targettype</I ></TT >) | CONSTRAINT <TT CLASS="REPLACEABLE" ><I >constraint_name</I ></TT > ON <TT CLASS="REPLACEABLE" ><I >table_name</I ></TT > | CONVERSION <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | DATABASE <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | DOMAIN <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | FUNCTION <TT CLASS="REPLACEABLE" ><I >func_name</I ></TT > (<TT CLASS="REPLACEABLE" ><I >arg1_type</I ></TT >, <TT CLASS="REPLACEABLE" ><I >arg2_type</I ></TT >, ...) | INDEX <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | LARGE OBJECT <TT CLASS="REPLACEABLE" ><I >large_object_oid</I ></TT > | OPERATOR <TT CLASS="REPLACEABLE" ><I >op</I ></TT > (<TT CLASS="REPLACEABLE" ><I >leftoperand_type</I ></TT >, <TT CLASS="REPLACEABLE" ><I >rightoperand_type</I ></TT >) | OPERATOR CLASS <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > USING <TT CLASS="REPLACEABLE" ><I >index_method</I ></TT > | [ PROCEDURAL ] LANGUAGE <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | RULE <TT CLASS="REPLACEABLE" ><I >rule_name</I ></TT > ON <TT CLASS="REPLACEABLE" ><I >table_name</I ></TT > | SCHEMA <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | SEQUENCE <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | TRIGGER <TT CLASS="REPLACEABLE" ><I >trigger_name</I ></TT > ON <TT CLASS="REPLACEABLE" ><I >table_name</I ></TT > | TYPE <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > | VIEW <TT CLASS="REPLACEABLE" ><I >object_name</I ></TT > } IS <TT CLASS="REPLACEABLE" ><I >'text'</I ></TT ></PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN38082" ></A ><H2 >Description</H2 ><P > <TT CLASS="COMMAND" >COMMENT</TT > stores a comment about a database object. </P ><P > To modify a comment, issue a new <TT CLASS="COMMAND" >COMMENT</TT > command for the same object. Only one comment string is stored for each object. To remove a comment, write <TT CLASS="LITERAL" >NULL</TT > in place of the text string. Comments are automatically dropped when the object is dropped. </P ><P > Comments can be easily retrieved with the <SPAN CLASS="APPLICATION" >psql</SPAN > commands <TT CLASS="COMMAND" >\dd</TT >, <TT CLASS="COMMAND" >\d+</TT >, and <TT CLASS="COMMAND" >\l+</TT >. Other user interfaces to retrieve comments can be built atop the same built-in functions that <SPAN CLASS="APPLICATION" >psql</SPAN > uses, namely <CODE CLASS="FUNCTION" >obj_description</CODE > and <CODE CLASS="FUNCTION" >col_description</CODE > (see <A HREF="functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE" >Table 9-43</A >). </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN38098" ></A ><H2 >Parameters</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="REPLACEABLE" ><I >object_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >table_name.column_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >agg_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >constraint_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >func_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >op</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >rule_name</I ></TT ><BR><TT CLASS="REPLACEABLE" ><I >trigger_name</I ></TT ></DT ><DD ><P > The name of the object to be commented. Names of tables, aggregates, domains, functions, indexes, operators, operator classes, sequences, types, and views may be schema-qualified. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >agg_type</I ></TT ></DT ><DD ><P > The argument data type of the aggregate function, or <TT CLASS="LITERAL" >*</TT > if the function accepts any data type. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >large_object_oid</I ></TT ></DT ><DD ><P > The OID of the large object. </P ></DD ><DT ><TT CLASS="LITERAL" >PROCEDURAL</TT ></DT ><DD ><P > This is a noise word. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >sourcetype</I ></TT ></DT ><DD ><P > The name of the source data type of the cast. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >targettype</I ></TT ></DT ><DD ><P > The name of the target data type of the cast. </P ></DD ><DT ><TT CLASS="REPLACEABLE" ><I >text</I ></TT ></DT ><DD ><P > The new comment, written as a string literal; or <TT CLASS="LITERAL" >NULL</TT > to drop the comment. </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN38152" ></A ><H2 >Notes</H2 ><P > A comment for a database can only be created in that database, and will only be visible in that database, not in other databases. </P ><P > There is presently no security mechanism for comments: any user connected to a database can see all the comments for objects in that database (although only superusers can change comments for objects that they don't own). Therefore, don't put security-critical information in comments. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN38156" ></A ><H2 >Examples</H2 ><P > Attach a comment to the table <TT CLASS="LITERAL" >mytable</TT >: </P><PRE CLASS="PROGRAMLISTING" >COMMENT ON TABLE mytable IS 'This is my table.';</PRE ><P> Remove it again: </P><PRE CLASS="PROGRAMLISTING" >COMMENT ON TABLE mytable IS NULL;</PRE ><P> </P ><P > Some more examples: </P><PRE CLASS="PROGRAMLISTING" >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 COLUMN my_table.my_column IS 'Employee ID number'; COMMENT ON CONVERSION my_conv IS 'Conversion to Unicode'; COMMENT ON DATABASE my_database IS 'Development Database'; COMMENT ON DOMAIN my_domain IS 'Email Address Domain'; 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 OPERATOR ^ (text, text) IS 'Performs intersection of two texts'; COMMENT ON OPERATOR ^ (NONE, text) IS 'This is a prefix operator on text'; COMMENT ON OPERATOR CLASS int4ops USING btree IS '4 byte integer operators for btrees'; 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 TABLE my_schema.my_table IS 'Employee Information'; 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';</PRE ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN38164" ></A ><H2 >Compatibility</H2 ><P > There is no <TT CLASS="COMMAND" >COMMENT</TT > command in the SQL standard. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="sql-cluster.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="sql-commit.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >CLUSTER</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="sql-commands.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >COMMIT</TD ></TR ></TABLE ></DIV ></BODY ></HTML >