database – 当我们需要从触发程序返回值时?
有关触发器过程的文档(
https://www.postgresql.org/docs/9.6/static/plpgsql-trigger.html)说:“触发器函数必须返回NULL或记录/行”.
例 CREATE TRIGGER my_trigger AFTER INSERT ON table_name FOR EACH ROW EXECUTE PROCEDURE some_trigger_function(); 假设some_trigger_function()返回记录/行,我明白程序体是在这个事件上调用并执行的,在这个表上,依此类推……但是在哪里返回值这个程序? 问题是:当我们使用那个返回值时?为什么我们需要这个价值呢?你能给出一些使用这个返回值的例子/解释吗? 解决方法
阅读
the documentation:
以下示例显示如何有条件地中止触发器中的插入: create table my_table(id int); -- do not insert rows with id > 10 create or replace function before_insert_on_my_table() returns trigger language plpgsql as $$ begin return case when new.id > 10 then null else new end; end $$; create trigger before_insert_on_my_table before insert on my_table for each row execute procedure before_insert_on_my_table(); insert into my_table values (15),(10),(5),(20) returning id; id ---- 10 5 (2 rows) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |