我想创建一个 plsql 函数,该函数将由 BEFORE INSERT 触发器调用。 该函数根据另一列的值更新另一列。
这是代码:
CREATE OR REPLACE FUNCTION Xupd_cat_prop()
RETURNS TRIGGER
AS
$$
DECLARE categ_prop varchar;
BEGIN
kateg_prop := CASE
WHEN new.cat_tarif = 'domestic_1' OR new.cat_tarif = 'domestic_2' THEN new.class = 'DOM'
WHEN new.cat_tarif = 'nondomestic_1' THEN new.class = 'NONDOM'
WHEN new.cat_tarif = 'industry' THEN new.class = 'IND'
END;
RETURN new;
END;
$$
LANGUAGE plpgsql;
但这行不通。我正在使用 Postgresql 16。 错误出现在
WHEN
子句中。
谢谢
您使用 SQL
CASE
语句。该语句只能包含表达式:
kateg_prop := CASE
WHEN new.cat_tarif = 'domestic_1' OR new.cat_tarif = 'domestic_2' THEN 'DOM'
WHEN new.cat_tarif = 'nondomestic_1' THEN 'NONDOM'
WHEN new.cat_tarif = 'industry' THEN 'IND'
END;