summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/errcodes.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/errcodes.sgml')
-rw-r--r--doc/src/sgml/errcodes.sgml89
1 files changed, 89 insertions, 0 deletions
diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml
new file mode 100644
index 0000000..861fa51
--- /dev/null
+++ b/doc/src/sgml/errcodes.sgml
@@ -0,0 +1,89 @@
+<!-- doc/src/sgml/errcodes.sgml -->
+
+<appendix id="errcodes-appendix">
+ <title><productname>PostgreSQL</productname> Error Codes</title>
+
+ <indexterm zone="errcodes-appendix">
+ <primary>error codes</primary>
+ <secondary>list of</secondary>
+ </indexterm>
+
+ <para>
+ All messages emitted by the <productname>PostgreSQL</productname>
+ server are assigned five-character error codes that follow the SQL
+ standard's conventions for <quote>SQLSTATE</quote> codes. Applications
+ that need to know which error condition has occurred should usually
+ test the error code, rather than looking at the textual error
+ message. The error codes are less likely to change across
+ <productname>PostgreSQL</productname> releases, and also are not subject to
+ change due to localization of error messages. Note that some, but
+ not all, of the error codes produced by <productname>PostgreSQL</productname>
+ are defined by the SQL standard; some additional error codes for
+ conditions not defined by the standard have been invented or
+ borrowed from other databases.
+ </para>
+
+ <para>
+ According to the standard, the first two characters of an error code
+ denote a class of errors, while the last three characters indicate
+ a specific condition within that class. Thus, an application that
+ does not recognize the specific error code might still be able to infer
+ what to do from the error class.
+ </para>
+
+ <para>
+ <xref linkend="errcodes-table"/> lists all the error codes defined in
+ <productname>PostgreSQL</productname> &version;. (Some are not actually
+ used at present, but are defined by the SQL standard.)
+ The error classes are also shown. For each error class there is a
+ <quote>standard</quote> error code having the last three characters
+ <literal>000</literal>. This code is used only for error conditions that fall
+ within the class but do not have any more-specific code assigned.
+ </para>
+
+ <para>
+ The symbol shown in the column <quote>Condition Name</quote> is
+ the condition name to use in <application>PL/pgSQL</application>. Condition
+ names can be written in either upper or lower case. (Note that
+ <application>PL/pgSQL</application> does not recognize warning, as opposed to error,
+ condition names; those are classes 00, 01, and 02.)
+ </para>
+
+ <para>
+ For some types of errors, the server reports the name of a database object
+ (a table, table column, data type, or constraint) associated with the error;
+ for example, the name of the unique constraint that caused a
+ <symbol>unique_violation</symbol> error. Such names are supplied in separate
+ fields of the error report message so that applications need not try to
+ extract them from the possibly-localized human-readable text of the message.
+ As of <productname>PostgreSQL</productname> 9.3, complete coverage for this feature
+ exists only for errors in SQLSTATE class 23 (integrity constraint
+ violation), but this is likely to be expanded in future.
+ </para>
+
+
+<table id="errcodes-table">
+ <title><productname>PostgreSQL</productname> Error Codes</title>
+
+ <tgroup cols="2">
+ <colspec colnum="1" colname="errorcode" colwidth="1*"/>
+ <colspec colnum="2" colname="condname" colwidth="8*"/>
+ <spanspec namest="errorcode" nameend="condname" spanname="span12"/>
+
+ <thead>
+ <row>
+ <entry>Error Code</entry>
+ <entry>Condition Name</entry>
+ </row>
+ </thead>
+
+ <tbody>
+
+ &errcodes-table;
+
+ </tbody>
+ </tgroup>
+</table>
+
+
+</appendix>