创建触发器会在 PostgreSQL 中"function does not exist"错误



我现在正在从事一个项目,我正在尝试构建一个触发器,该触发器更新列" lastedit"(在表格中(,这是时间戳存储最后更改是在触发创建中指定的模式中对表进行的(在这种情况下为认证(。

现在,我的问题是,当我尝试创建触发器时,创建函数" 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();

解决方案是为函数使用一个完全限定的名称,如下所示: ovsoftware.update_lastedit()。我不确定为什么是这种情况,因为在其他情况下我不需要这样做。无论哪种方式,范围显然都不包括OVSoftware架构,导致错误。

相关内容

最新更新