我苦苦挣扎的一件事是在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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句