Sql 如何创建删除尾随空格的快速触发器
我试图创建删除尾随空格的触发器。为了设置它,我指定只有在列实际包含前导空格时才执行它:Sql 如何创建删除尾随空格的快速触发器,sql,postgresql,plpgsql,database-trigger,Sql,Postgresql,Plpgsql,Database Trigger,我试图创建删除尾随空格的触发器。为了设置它,我指定只有在列实际包含前导空格时才执行它: create table rid (nimetus varchar(50)); CREATE OR replace FUNCTION public.TrimRid() RETURNS trigger AS $$ BEGIN NEW.nimetus:= TRIM(trailing from NEW.nimetus); RETURN NEW; END $$ LANG
create table rid (nimetus varchar(50));
CREATE OR replace FUNCTION public.TrimRid() RETURNS trigger AS $$
BEGIN
NEW.nimetus:= TRIM(trailing from NEW.nimetus);
RETURN NEW;
END
$$ LANGUAGE plpgsql;
CREATE TRIGGER rid_trim_trig BEFORE INSERT OR UPDATE OF nimetus
ON rid WHEN (NEW.nimetus like '% ') EXECUTE PROCEDURE public.TrimRid();
此代码引发错误
ERROR: statement trigger's WHEN condition cannot reference column values
LINE 10: ON rid WHEN (NEW.nimetus like '% ') EXECUTE PROCEDURE pub...
^
SQL state: 42P17
Character: 304
如何创建快速触发器以删除Postgres中的尾随空格?默认情况下,如果未指定,触发器将创建为语句级触发器。但是,在
WHERE
子句中使用行列只能用于行级触发器
因此,触发器创建语句应该包含每行的子句:
CREATE TRIGGER rid_trim_trig
BEFORE INSERT OR UPDATE OF nimetus ON rid
FOR EACH ROW
WHEN (NEW.nimetus like '% ') EXECUTE PROCEDURE public.TrimRid();
更多信息请参见文档。”
。这是默认的。如果删除when子句,它将在不使用'
Try创建触发器的情况下工作。。。当…
它起作用时,每一行的rid上都有,谢谢。你可以写下这个作为答案。