检测更新不会更改行的触发器

A trigger that detects that an UPDATE wouldn't change a row

我写了以下触发器:

CREATE FUNCTION trig_func() RETURNS trigger AS $$
  BEGIN
    IF NEW = OLD
    THEN -- update would do nothing, doing something...
    END IF;
    RETURN NEW;
  END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trig BEFORE UPDATE ON some_table
  FOR EACH ROW EXECUTE PROCEDURE trig_func();

它清楚地表明了我想要实现的目标,但是用什么来代替 NEW = OLD 是正确的?

is distinct from 运算符可以比较完整的行并将正确处理空值。

所以你想要

if new is not distinct from old then 
   ...
end if;