更改日期触发

时间:2014-05-19 15:51:10

标签: postgresql triggers plpgsql

我试图在我的数据库中创建一些触发器。 现在我需要创建一个触发器" 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
);
显然,这种触发器只会触发"触发"当插入值"数据"等于当前日期。

1 个答案:

答案 0 :(得分:2)

Triggers(或第9 + 3页中的event triggers)仅触发已定义的数据事件。你在说什么是一个预定的(基于时间的)事件。 Postgres没有内置任何东西。

我通常使用 cron 作业来安排这样的工作。

还有pgAgent,曾经与pgAdmin打包在一起。 (从pgAdmin v1.9开始,pgAgent作为单独的应用程序发货。)