sql触发器-更新/插入

问题描述 投票:1回答:1

我正在努力解决的一件事就是SQL中触发器的定义。我需要为给定的表实现以下代码:-对于表中插入的任何新行,将激活触发器,并且表将当前日期存储在属性日期上。我下面包含的代码的问题是更新表中的所有行,并且只希望使用当前日期更新插入的表。

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

对于表的任何行上的任何更新,都会激活触发器,并再次将当前日期存储在属性日期上。

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();
postgresql sql-insert database-trigger
1个回答
3
投票

[使用BEFORE触发器来操纵要插入/更新的行:

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();
© www.soinside.com 2019 - 2024. All rights reserved.