小编Yur*_*nov的帖子

仅在更新的行上更新后的 PostgreSQL 触发器

我有一张小桌子用来放新闻。我想制作一个触发器来设置行中的更新日期和更新时间(仅适用于已更新的行)

我尝试进行以下操作:

CREATE FUNCTION add_update_dates()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
  IF (OLD.news_name IS DISTINCT FROM NEW.news_name OR
  OLD.news_description IS DISTINCT FROM NEW.news_description OR
  OLD.news_text IS DISTINCT FROM NEW.news_text) THEN
  UPDATE news SET news_update_date = current_date, news_update_time = current_time;
END IF;
RETURN new;
END
$$;

CREATE TRIGGER update_news_dates
AFTER UPDATE ON news
FOR EACH ROW
EXECUTE PROCEDURE add_update_dates();
Run Code Online (Sandbox Code Playgroud)

但是当我只想要更新的那些时,触发器会更新我表中的每一行(即使是那些没有更新的行)。我究竟做错了什么?

sql postgresql triggers plpgsql

4
推荐指数
1
解决办法
4595
查看次数

标签 统计

plpgsql ×1

postgresql ×1

sql ×1

triggers ×1