如何在触发器的 When 条件中使用 REGEXP_LIKE?
Posted
技术标签:
【中文标题】如何在触发器的 When 条件中使用 REGEXP_LIKE?【英文标题】:How to use REGEXP_LIKE in trigger's When condition? 【发布时间】:2016-01-11 11:43:01 【问题描述】:create or replace trigger emp_trig
before insert or update of salary on emp
for each row
when `REGEXP_LIKE(:new.job_id, 'ac*','i')` -- Here
BEGIN
IF inserting then
:new.commission_pct := 0.20;
elsif (:old.commission_pct is null) then
:new.commission_pct := 0.1;
END IF;
END;
【问题讨论】:
请在提问时使用代码格式——它可以让人们更清楚地快速查看和理解您的代码和问题。 【参考方案1】:create or replace trigger emp_trig
before insert or update of salary on emp
for each row
when (REGEXP_LIKE(new.job_id, 'ac*','i'))
BEGIN
IF inserting then
:new.commission_pct := 0.20;
elsif (:old.commission_pct is null) then
:new.commission_pct := 0.1;
END IF;
END;
/
【讨论】:
【参考方案2】:嘿。如果您尝试进行简单匹配,请避免使用 Regular 表达。而是使用 LIKE 和您的测试条件。以下 sn-p 说明了一个简单的示例来满足您的要求。希望 它有帮助
CREATE OR REPLACE TRIGGER emp_trig before
INSERT OR
UPDATE OF sal ON emp FOR EACH row
WHEN (new.job LIKE '%TEST%')
DECLARE
BEGIN
IF inserting THEN
:new.comm := 0.20;
elsif (:old.comm IS NULL) THEN
:new.comm := 0.1;
END IF;
END;
【讨论】:
以上是关于如何在触发器的 When 条件中使用 REGEXP_LIKE?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyspark.sql.functions.when() 中使用多个条件?
如何使用 REGEXP_REPLACE 替换特定条件下的重复单词?
drools when写条件判断时能加循环吗?我有多个条件要进行判断,而且条件的数量未知。