在Postgresql中,我如何告诉触发器函数...如果没有找到什么都没做(通过)

时间:2015-08-29 22:25:39

标签: function triggers postgresql-9.1

我使用PostgreSQL 9.1创建触发器功能,我在这个触发器功能中如何表达...

IF NEW.timetype = 'start' THEN
  SELECT timestmp FROM tbl_ebscb_saaaa_log WHERE fnname = NEW.fnname AND timetype = 'start' ORDER BY stmtserial DESC LIMIT 1 INTO v_timestmp_start;
    IF FOUND THEN
      NEW.timetypespan := age(NEW.timestpm, v_timestmp_start);
    ELSE
    END IF;

我想...如果没有找到,那么什么都不做(比如"传递"在python中),我该怎么办?把它留在空白???不在任何循环内。

谢谢高级。

PD:如果有人可以提供关于基本postgresql工作流程的示例的良好链接,请。再次感谢。

1 个答案:

答案 0 :(得分:0)

在SQL中通常至少有两种方法可以做到这一点:

第一种方法是不检索值,只是检查它。这将使用if exists语句替换您的select语句。如果您不需要对v_timestmp_start值执行任何其他操作,请使用此方法。

看起来像是:IF EXISTS (SELECT 1 FROM tbl WHERE ...) THEN ...

另一种方法是检查变量的值,如果select没有找到任何内容,则该值应为NULL。这看起来非常像您已经拥有的(但替换为IF NOT NULL)。

这看起来像是:IF v_timestmp_start IS NOT NULL THEN ...

还有一个与postgres独有的选项。这看起来与您已有的(IF FOUND THEN ...完全一样。