SQL约束验证函数

SQL Constraint Verification Function

我想在请求期间检查是否遵守约束,如果不遵守则发送 ERROR 消息,只需 return FALSE。我该怎么做?

我正在使用的 TABLE 示例:

CREATE TABLE tree (
    name   VARCHAR(64) UNIQUE PRIMARY KEY,
    leaf   INT CHECK (leaf > 0)
);

我将使用的函数示例:

CREATE FUNCTION add_tree(name, nb_leaf) RETURNS BOOLEAN;
CREATE FUNCTION remove_leaf(tree_name, leaf_to_remove) RETURNS BOOLEAN;

在我的函数中,检查名称会过于重复

IF EXISTS (SELECT name FROM tree WHERE name=tree_name) THEN...

因为我已经有一个 UNIQUE 约束,但是如果我不检查我当然会得到错误消息,我怎么不使用检查 (IF..) 而不是得到错误消息而是 return输入错误时改为false?

PS:如果有任何改变,我正在使用 postgresql

引发异常时,return 函数中的错误:

EXCEPTION
  WHEN OTHERS THEN
   return false;
END;

http://www.postgresql.org/docs/9.3/static/plpgsql-control-structures.html

在页面末尾您将看到一个示例:

DECLARE
  text_var1 text;
  text_var2 text;
  text_var3 text;
BEGIN
  -- some processing which might cause an exception
  ...
EXCEPTION WHEN OTHERS THEN
  GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
                          text_var2 = PG_EXCEPTION_DETAIL,
                          text_var3 = PG_EXCEPTION_HINT;
END;