无法在 postgreSQL 中触发异常 NO_DATA_FOUND

use*_*721 3 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');
Run Code Online (Sandbox Code Playgroud)

Igo*_*nko 7

要触发NO_DATA_FOUND异常使用:

Select empname INTO STRICT var_name from emp_table1 WHERE empid = 161232;
Run Code Online (Sandbox Code Playgroud)

详情请见:http : //www.postgresql.org/docs/current/static/plpgsql-statements.html

如果在 INTO 子句中未指定 STRICT,则目标将设置为查询返回的第一行,如果查询未返回任何行,则设置为空值。

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