PostgreSQL触发程序根据不同的表字段更改INSERT字段值

时间:2016-05-17 03:02:02

标签: sql postgresql triggers constraints postgresql-9.3

我有一个名为Cases的表,其中包含以下字段:

  • caseid(主键)
  • casenumber
  • dateoffiling等。

其他领域。

在另一张表中,发票,我将caseid称为foriegn键,例如

  • invoiceid(主键)
  • invoicecode
  • caseid(foriegn key - > cases.caseid)
  • invoicedate 等

现在每当我将记录插入发票时,我想检查invoicedate是否大于或等于cases.dateoffiling(对于该特定发票),如果没有,我想要触发异常或将invoicedate设置为等于dateoffiling (在提交案件之前你不能提出发票)。

我试图用Postgresql pgsql触发器破解我的头脑,包括文档和示例,但我无法在任何地方找到上述场景。任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:0)

我想我已经找到了触发功能的解决方案:

CREATE OR REPLACE FUNCTION invoicedatecheck()
   RETURNS trigger AS
$BODY$declare 
    filingdate date;
begin
    select dateoffiling from cases where casesid=new.caseid into filingdate;

    if new.invoicedate < filingdate then
    new.invoicedate = filingdate;
    end if;
    return new;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION invoicedatecheck()
OWNER TO remoteuser;