PL/SQL - 简单触发器,从一列获取,IF-THEN-ELSE 到另一列
PL/SQL - Simple trigger, take from one column and IF-THEN-ELSE to another column
我想找出我在这个简单的触发器上出错的地方。我对触发器很陌生,并试图习惯将它们与 IFTTT 语句一起使用。
我想让触发器监视一个新的行条目,如果该值在某一列(col_a
)内的某个范围内,它会在同一行中输入某个值,但不同列 (col_b
),在输入之前它将是 NULL
。你能帮忙吗?
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;
它只是不断返回 "success with compilation error"。
您可以使用虚拟列轻松完成此操作:
alter table test_table
add col_b generated always as (case when col_a >= 10 then 'High' else 'Low' end);
我希望触发器中的练习使用合理的用例。这不是一个 - 例如,您需要 insert
和 update
触发器。
我想找出我在这个简单的触发器上出错的地方。我对触发器很陌生,并试图习惯将它们与 IFTTT 语句一起使用。
我想让触发器监视一个新的行条目,如果该值在某一列(col_a
)内的某个范围内,它会在同一行中输入某个值,但不同列 (col_b
),在输入之前它将是 NULL
。你能帮忙吗?
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;
它只是不断返回 "success with compilation error"。
您可以使用虚拟列轻松完成此操作:
alter table test_table
add col_b generated always as (case when col_a >= 10 then 'High' else 'Low' end);
我希望触发器中的练习使用合理的用例。这不是一个 - 例如,您需要 insert
和 update
触发器。