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)
要触发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(多于一行)。
| 归档时间: |
|
| 查看次数: |
7252 次 |
| 最近记录: |