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

时间:2017-12-11 17:53:15

标签: sql postgresql triggers plpgsql

我有一张新闻报道。我想创建一个触发器,在行中设置更新日期和更新时间(仅适用于已更新的行)

我尝试了以下内容:

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();

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

1 个答案:

答案 0 :(得分:2)

您的JavaScript语句正在更新表格中的所有行!它没有innerDiv条款。

只需使用作业:

width

顺便说一句,将日期/时间存储在不同的列中对我来说毫无意义。