大家好,我没有写过触发器,现在需要用到一个功能,哪位大侠帮忙写一个?
环境是oracle 9i
table  A   B    C  D
      123  SP   -- --
      1A3  SP
      1B3  HP
      356  HP
      6B9  CP
表中A列是一个ID,有两种情况,有的全部是数字,有的第二位是A或是B,
表中B列是字符串。
我现在想在插入每条记录是检查A列中的二位是否是A或B,如果不是就在B列的前面加一个字符'X'
Oracle触发器

解决方案 »

  1.   

    也没必要用触发器吧。。
    插入的时候做个判断就是了
    decode(substr(a, 2, 1), 'A', 'X' || b, 'B', 'X' || b, b)
      

  2.   

    CREATE TRIGGER trg_test
    BEFORE INSERT ON test
    FOR EACH ROW
    BEGIN
      IF SUBSTR(:new.a,2,1) NOT IN ('A','B') THEN
        :new.b := 'X'||:new.b;
      END IF;
    END;
    /
      

  3.   

    -- 测试代码:CREATE TABLE test(
      a VARCHAR2(30),
      B VARCHAR2(30)
    );CREATE TRIGGER trg_test
    BEFORE INSERT ON test
    FOR EACH ROW
    BEGIN
      IF SUBSTR(:new.a,2,1) NOT IN ('A','B') THEN
        :new.b := 'X'||:new.b;
      END IF;
    END;
    /INSERT INTO test(a,b) VALUES('1234','LYM1');
    INSERT INTO test(a,b) VALUES('12A34','LYMA1');
    INSERT INTO test(a,b) VALUES('1B234','LYMB1');