Function postgresql函数/两个日期之间的触发天数

Function postgresql函数/两个日期之间的触发天数,function,postgresql,date,triggers,Function,Postgresql,Date,Triggers,我想创建一个函数来计算两个日期之间的天数,并将结果存储在表中的列中 功能和触发器: 表: CREATE TABLE calc( idU SERIAL PRIMARY KEY, dateFROM DATE NOT NULL, dateTO DATE NOT NULL, duration INTEGER ); 当我重新插入时,出现错误: PL/pgSQL函数“dur”在SQL语句的第4行 SQL语句“插入计算(持续时间)值(新的.duration)” 您没有发布错误

我想创建一个函数来计算两个日期之间的天数,并将结果存储在表中的列中

功能和触发器:



表:

CREATE TABLE calc(

   idU SERIAL PRIMARY KEY,
   dateFROM DATE NOT NULL,
   dateTO DATE NOT NULL,
   duration INTEGER );

当我重新插入时,出现错误:

PL/pgSQL函数“dur”在SQL语句的第4行 SQL语句“插入计算(持续时间)值(新的.duration)”


您没有发布错误,只是发布导致错误的语句


切中要害:去掉insert语句。你很可能在级联触发器,导致它一次又一次地调用自己。设置NEW.dur,然后返回NEW将在插入的行中设置该值。

如果我理解,您必须自动计算
持续时间
字段,如果是这样,您只需删除:

 INSERT INTO calc(duration) VALUES (NEW.duration);
因为,您已经使用以下公式计算了该字段:

  NEW.duration = NEW.dateTO - NEW.dateFROM;
当删除“插入计算(持续时间)值(NEW.duration);”时,它会起作用;我有另一个命令!如何添加一个函数来计算表中添加的所有较早日期的duartion时间。
  NEW.duration = NEW.dateTO - NEW.dateFROM;