无法在postgreSQL中触发异常NO_DATA_FOUND

时间:2014-11-12 13:23:42

标签: postgresql triggers

即使返回的行或结果集为零,我也无法从PostgreSql 8.2中的函数触发异常NO_DATA_FOUND。

这是我的代码;

 CREATE OR REPLACE FUNCTION func_ex() RETURNS trigger AS  

$func_ex$
    DECLARE               
        var_name  name;                 
    BEGIN
           Select empname INTO var_name from emp_table1 WHERE empid = 161232;  

    EXCEPTION
        WHEN NO_DATA_FOUND THEN 
        RAISE EXCEPTION 'No data found';
        RETURN NEW;
    END;
  return new
$func_ex$ LANGUAGE plpgsql;
-- End of Function

-- Creation of Trigger
CREATE TRIGGER insert_trigger1 AFTER update of empname
    ON emp_table1 EXECUTE PROCEDURE func_ex();


-- insertion enteries.
INSERT INTO emp_table1 (empid, empname, salary) values (124, ' Sapmle_CustormerName', '3000');

1 个答案:

答案 0 :(得分:3)

要触发NO_DATA_FOUND例外使用:

Select empname INTO STRICT var_name from emp_table1 WHERE empid = 161232;

详细信息:http://www.postgresql.org/docs/current/static/plpgsql-statements.html

  

如果未在INTO子句中指定STRICT,则将设置target   到查询返回的第一行,如果是查询则返回null   没有返回任何行。

     

如果指定了STRICT选项,则查询必须返回一个   将报告行或运行时错误,NO_DATA_FOUND(否   (行)或TOO_MANY_ROWS(多行)。