如何在触发器的条件下使用REGEXP_LIKE?

时间:2016-01-11 11:43:02

标签: regex plsql triggers

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;

2 个答案:

答案 0 :(得分: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;
/

答案 1 :(得分:0)

  

嘿。如果你想做一个简单的匹配,那么避免使用Regular   表达。而是选择LIKE和你的测试条件。下面   片段说明了一个满足您要求的简单示例。希望   它有帮助

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;