我正在尝试创建一个触发器,以防止列更新如下:
如果列值为“A”,则无法更新为“B”,如果列值为“B”,则无法更新为“A”。
CREATE OR REPLACE FUNCTION cancelled_order()
RETURNS trigger
LANGUAGE plpgsql
AS $function$BEGIN
IF OLD.status = 'Cancelled' THEN NEW.status != 'Accomplished';
END IF;
IF OLD.status = 'Accomplished' THEN NEW.status != 'Cancelled';
END IF;
RETURN NEW;
END;
$function$;
CREATE TRIGGER No_cancelled_acomplished
BEFORE UPDATE OF status
ON clinical.tb_orders
EXECUTE PROCEDURE cancelled_order();
出现的错误是:
Sintaxis error: !=
有什么想法,为什么?
根据您想要在逻辑上完成的任务,不应该:
居然这么说?
对于 PostgreSQL,我的语法可能略有偏差,但我的意思是,这不是您正在寻找的那种逻辑表达式吗?(您不应该在
THEN
子句中进行布尔比较,我认为这就是它对 . 感到生气的原因!=
。)