我有一个新闻小表格。我想创建一个触发器来在行中设置更新日期和更新时间(只针对已更新的行)。
我尝试制作以下内容:
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();
但是触发器会更新我的表中的每一行(即使是没有更新的行),而我只想更新那些被更新过的行。我哪里做错了吗?
AFTER UPDATE
触发器中允许,但不在BEFORE UPDATE
触发器中允许。 - Nick Barnes