首页 > 解决方案 > PL/SQL - 简单触发器,从一列和 IF-THEN-ELSE 到另一列

问题描述

我试图找出在这个简单的触发器上我哪里出错了。我对触发器很陌生,并试图习惯将它们与 IFTTT 语句一起使用。

我希望触发器监视新的行条目,如果该值在列 ( ) 内的某个范围内,它将在同一行但不同的列 ( )col_a中输入某个值,直到这个被输入。请问你能帮忙吗?col_bNULL

CREATE TRIGGER trg_test
BEFORE INSERT
    ON test_table 
    FOR EACH ROW
BEGIN
    IF :new.col_a >= 10
    THEN :new.col_b := 'High';   
  ELSE
    :new.col_b := 'Low';
  END IF;
END;

它只是不断返回“编译错误成功”。

标签: sqloracleif-statementtriggersif-this-then-that

解决方案


您可以使用虚拟列轻松完成此操作:

alter table test_table
    add col_b generated always as (case when col_a >= 10 then 'High' else 'Low' end);

我希望触发器中的练习使用合理的用例。这不是一个 - 例如,您需要一个insert和一个update触发器。


推荐阅读