大家好,我没有写过触发器,现在需要用到一个功能,哪位大侠帮忙写一个?
环境是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触发器
环境是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触发器
解决方案 »
- oracle中有没有算分位数的函数?或者怎么能算出来分位数?
- 关于Oracle全局(Globally)验证用户的一个问题
- 怎样将 表A 里以及 表C 的数据插入到一张新建的 表B 里面?
- 再次请各位高手出手相救!!!
- 如何用游标删除多行数据
- 新手请教:为什么我的OMS里没有“数据库”这个结点?
- 数据库切换到存档模式报错.......各位大哥怎么办?
- 关于max()函数问题,急!
- 请问我在OEM中的CONSOLE中怎么只看到有节点,没有数据库呢?怎么把数据库添加进去呢?因为我要针对一个数据库做作业。
- 8.1.7安装到linux上,linux要选择哪种安装:专业版,服务器版等???
- 数据库的回滚机制求解
- 请教一个多个相同结构的表查询SQL优化的问题
插入的时候做个判断就是了
decode(substr(a, 2, 1), 'A', 'X' || b, 'B', 'X' || b, b)
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;
/
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');