【发布时间】:2020-05-01 23:24:35
【问题描述】:
我正在尝试创建带有条件的触发器。根据几何长度,我希望将属性“nom”(= name)写成大写或小写。
这是我所拥有的:
CREATE OR REPLACE FUNCTION public.test_upper_lower()
RETURNS trigger AS
$BODY$
BEGIN
NEW.dummy:= (ST_Length(new.geom));
if (SELECT dummy FROM ligne_ligne)>100
then NEW.nom:= LOWER(nom) FROM ligne_ligne;
else NEW.nom:= UPPER(nom) FROM ligne_ligne;
end if;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
DROP trigger IF EXISTS test_upper_lower on public.ligne_ligne;
CREATE trigger test_upper_lower BEFORE INSERT OR UPDATE on public.ligne_ligne
FOR EACH ROW
EXECUTE PROCEDURE public.test_upper_lower();
这样我有一个“子查询返回多行”错误
基于这个论坛上的其他问题,我尝试使用 case 而不是 if 并在触发器本身中使用 when 不是函数,但两者都不起作用
有什么想法吗? 谢谢
【问题讨论】:
标签: postgresql conditional-statements postgis plpgsql database-trigger