我试图在我的数据库中创建一些触发器。 现在我需要创建一个触发器" fire"日期发生变化时的程序。它是管理银行的Db。
我需要一些从编程日期开始的程序。例如,如果我想为24/05/2014设置授权操作,则此过程仅在当前日期等于指定值时启动。
我已经读过有一些"调度程序"这可以帮助我,但我不知道如何使用它们! (我使用的是phpPgAdmin)如果不设置一些预定程序,我可以做些什么?只使用触发器?
这是我的(错误的)触发器
CREATE TRIGGER programmata
AFTER INSERT ON transazione
FOR EACH ROW
EXECUTE PROCEDURE trans_programmata();
这是(错误的)程序" trans_programmata()"
DECLARE
p bit := 0;
BEGIN
IF(new.programmata = p)THEN
PERFORM * FROM aggiorna_conto();
ELSE
IF new.data >= current_date THEN
PERFORM * FROM aggiorna_conto();
END IF;
END IF;
RETURN NULL;
END;
这是表" transazione"
CREATE TABLE transazione (
id integer NOT NULL,
data date NOT NULL,
tipo bit(1) NOT NULL,
ammontare numeric(11,2) NOT NULL,
programmata bit(1) NOT NULL,
descrizione character varying(50) NOT NULL,
fk_conto integer NOT NULL,
fk_utente character(16) NOT NULL,
fk_categoria character varying(20) NOT NULL
);
显然,这种触发器只会触发"触发"当插入值"数据"等于当前日期。
答案 0 :(得分:2)
Triggers(或第9 + 3页中的event triggers)仅触发已定义的数据事件。你在说什么是一个预定的(基于时间的)事件。 Postgres没有内置任何东西。
我通常使用 cron 作业来安排这样的工作。
还有pgAgent,曾经与pgAdmin打包在一起。 (从pgAdmin v1.9开始,pgAgent作为单独的应用程序发货。)