sql 触发器 - update/insert

sql trigger - update/insert

我纠结的一件事是 SQL 中触发器的定义。我需要为给定的 table 实现一个代码,这样: - 对于 table 中插入的任何新行,触发器被激活并且 table 将当前日期存储在属性日期中。我在下面包含的代码中遇到的问题是更新 table 中的所有行,并且只希望插入的 table 更新为当前日期。

CREATE FUNCTION func()
RETURNS trigger AS $$
DECLARE
value DATE;
BEGIN
SELECT CURRENT_DATE INTO fecha;
UPDATE tabla SET date = value;
RETURN NULL;
END;
$$LANGUAGE plpgsql;

CREATE TRIGGER date
AFTER INSERT ON table
FOR EACH ROW EXECUTE PROCEDURE func();

对于 table 的任何行的任何更新,触发器被激活并再次将当前日期存储在属性 date 中。

CREATE FUNCTION func2()
RETURNS trigger AS $$
DECLARE
value DATE;
BEGIN
SELECT CURRENT_DATE INTO value;
SET NEW.date=value;
RETURN NULL;
END;
$$LANGUAGE plpgsql;

CREATE TRIGGER date
AFTER UPDATE ON table 
FOR EACH ROW
EXECUTE PROCEDURE func2();

改用 BEFORE 触发器来操作正在获取 inserted/updated:

的行
CREATE FUNCTION func()
RETURNS trigger AS $$
BEGIN
  NEW.date = CURRENT_DATE ;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER date
BEFORE INSERT OR UPDATE ON table
FOR EACH ROW EXECUTE PROCEDURE func();