【发布时间】:2020-12-04 19:35:05
【问题描述】:
我是 PGADMIN 的超级新手,但我遇到了问题。 每次在邮件或数据库中表的用户名中检测到更改时,我都必须创建一个触发器,将密码更新为“123456”并将重置标记更新为“Y”。 我的代码是:
CREATE OR REPLACE FUNCTION password_reset()
RETURNS trigger AS $$
BEGIN
UPDATE web_content.tb_user SET user_password = '123456'
WHERE user_email = NEW.user_email OR user_name = NEW.user_name;
UPDATE web_content.tb_user SET password_reset = 'Y'
WHERE user_email = NEW.user_email OR user_name = NEW.user_name;
RETURN NEW;
END
$$ LANGUAGE plpgsql;
CREATE TRIGGER TR_update BEFORE update on web_content.tb_user
for each row
execute procedure password_reset();
当我尝试对我的表进行更新时,出现错误错误 max_stack_depth。我不知道如何解决它。 谁能帮帮我?
提前致谢
【问题讨论】:
-
Laurenz 已经向您展示了 UPDATE 是不必要的。但即使不是,您也只需要 一个 UPDATE 语句,而不是两个。您可以使用单个语句更新多个列。您不需要为要更改的每一列运行一个
标签: sql postgresql triggers sql-update