sql - PL/SQL - 简单触发器,从一列和 IF-THEN-ELSE 到另一列
问题描述
我试图找出在这个简单的触发器上我哪里出错了。我对触发器很陌生,并试图习惯将它们与 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;
它只是不断返回“编译错误成功”。
解决方案
您可以使用虚拟列轻松完成此操作:
alter table test_table
add col_b generated always as (case when col_a >= 10 then 'High' else 'Low' end);
我希望触发器中的练习使用合理的用例。这不是一个 - 例如,您需要一个insert
和一个update
触发器。
推荐阅读
- git - 如何从提交树的基础创建一个新的 git 分支,它与 master 分支没有共同提交?对于 gh 页面
- parsing - 使用自下而上解析为给定输入生成的输出
- r - 使用 read.csv.ffdf 设置 csv 的列类型
- android - 是否可以垂直居中文本
- html - 将一列拆分为html中的行
- c# - C# 列表比较
- tensorflow - 我应该如何提高培训和验证的准确性/损失?
- python - 提取熊猫数据框中第二次出现的字符左侧的所有内容
- python - 当试图找到从序列中的一个元素到更高索引的元素的最大增量时,如何为空列表做特殊情况?
- c# - 为什么 User.Identity 不包含 ClaimsTypes 的整个列表?