我正在开发一个项目,我正在尝试构建一个更新列“lastedit”的触发器(在表Person中),这是一个时间戳,用于存储对表中的最后一次更改的时间触发器创建中指定的模式(在本例中为证书)。
现在,我的问题是,当我尝试创建触发器时,在创建函数“update_lastedit()”之后,它给出了一个错误,指出该函数不存在。我想我的功能可能在某个地方不匹配,但我似乎无法找到它。
你能帮助我吗?我正在运行PostgreSQL 9.5.5。如果我需要提供更广泛的解释,请告诉我,这是我的第一个问题,所以我可能忽略了一些重要的事情。我的触发器和函数代码如下:
CREATE OR REPLACE FUNCTION update_lastedit() RETURNS TRIGGER AS
$update_edit$
BEGIN
UPDATE ovsoftware.person
SET lastedit = now();
END;
$update_edit$
LANGUAGE plpgsql;
和
CREATE TRIGGER cert_edit_trigger
BEFORE INSERT OR UPDATE ON ovsoftware.certifications
FOR EACH ROW
EXECUTE PROCEDURE update_lastedit();
确切错误:
SQL fout:
ERROR: function update_lastedit() does not exist
In statement:
CREATE TRIGGER cert_edit_trigger
BEFORE INSERT OR UPDATE ON ovsoftware.certifications
FOR EACH ROW
EXECUTE PROCEDURE update_lastedit();
答案 0 :(得分:1)
解决方案是使用函数的完全限定名称,如下所示:ovsoftware.update_lastedit()
。我不确定为什么会这样,因为在其他情况下我不需要这样做。
无论哪种方式,范围显然不包括ovsoftware架构,导致错误。