我现在正在从事一个项目,我正在尝试构建一个触发器,该触发器更新列" 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架构,导致错误。