SQL 函数无法返回触发器类型

问题描述 投票:0回答:2

我正在将 PostgreSQL 与 pgAdmin 一起使用,但我无法使触发器功能正常工作。但是,据我所知,PostgreSQL 中可以返回类型触发器吗?

CREATE OR REPLACE FUNCTION validate_Cat() 
  RETURNS TRIGGER AS 
$BODY$
BEGIN
    -- CODE here
END;
$BODY$
  LANGUAGE SQL;

CREATE TRIGGER validate_Cat
AFTER INSERT OR UPDATE ON Category
FOR EACH ROW execute procedure validate_Cat();
postgresql plpgsql database-trigger
2个回答
24
投票

已解决,必须将语言更改为

PLPGSQL


0
投票

我在下面遇到了同样的错误:

错误:SQL 函数无法返回类型触发器

当我尝试使用

LANGUAGE SQL
创建触发功能时,如下所示:

CREATE FUNCTION my_func() RETURNS trigger
LANGUAGE SQL -- Here
AS $$
$$;

但是,我可以使用

LANGUAGE plpgsql
创建触发函数,不会出现错误,如下所示:

CREATE FUNCTION my_func() RETURNS trigger
LANGUAGE plpgsql -- Here
AS $$
BEGIN
END;
$$;

此外,我还收到以下错误:

错误:SQL 函数无法返回 event_trigger 类型

当我尝试使用

LANGUAGE SQL
创建事件触发函数时,如下所示:

CREATE FUNCTION my_func()
RETURNS event_trigger
LANGUAGE SQL -- Here
AS $$
$$;

但是,我可以使用

LANGUAGE plpgsql
创建事件触发函数,不会出现错误,如下所示:

CREATE FUNCTION my_func()
RETURNS event_trigger
LANGUAGE plpgsql -- Here
AS $$
BEGIN
END;
$$;
© www.soinside.com 2019 - 2024. All rights reserved.