Every PL/pgSQL code block can include a section for exception handling. Exceptions are errors that arise during the flow of the code block and are of different types. A block can handle these errors in order to recover. The exception handling part of a code block begins with an EXCEPTION keyword and can include different branches, marked with the WHEN keyword, to handle different error types. Error types are coded into the server and are identified by either a mnemonic name, such as unique_violation, to indicate a unique constraint violation, or a numeric SQL State, such as 23505.
By default, WHEN branches refer to error names, while numeric SQL States have to be placed as strings preceded by the SQLSTATE keyword. The OTHERS special error name is used as a general way to catch any kind of error other than user cancelled statements.
If a code block...