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

In Postgresql, how I tell a trigger Function to... IF NOT FOUND do nothing (pass)

我正在使用 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 中的 "pass"),我该怎么办?直接留空???不在任何循环内。

感谢高级。

PD:如果有人可以提供一个很好的 link 以及有关基本 postgresql 工作流程的示例,请提供帮助。再次感谢。

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

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

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

另一种方法是检查变量的值,如果 select 没有找到任何东西,该变量应该为 NULL。这看起来很像您已有的(但用 IF NOT NULL 替换 found)。

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

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