gpt4 book ai didi

postgresql - sql 触发器 - 更新/插入

转载 作者:行者123 更新时间:2023-12-03 02:50:41 24 4
gpt4 key购买 nike

我正在努力解决的一件事是 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();

最佳答案

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

关于postgresql - sql 触发器 - 更新/插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59204524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com