我创建了下面的触发器和函数,用于更新函数,我想在两列'frm'和'upto'上有更新时排除触发器执行,它们的类型为“没有时区的时间戳”
在触发函数中,我正在检查这两列的更新
CREATE OR REPLACE FUNCTION ff() RETURNS TRIGGER AS $$
BEGIN
if((old."frm" == New."frm") and (old."upto" == New."upto") ) then
insert into TG_TABLE_NAME (select * from inserted );
New."from" := old."from";
NEW."upto" := current_timestamp;
RETURN NEW;
END IF;
RETURN NULL;
END $$ LANGUAGE plpgsql;
create trigger update_trig2 after update on dd
for each row execute procedure ff();`
运行更新查询后,我在postgreSQL中遇到以下错误
错误:运算符不存在:不带时区的时间戳==不带时区的时间戳
在SQL和PL/pgSQL中,比较运算符是=
。
所以你需要用=
替换=