表A有两列,(AID,AVAL)做一个触发器.完成下列任务:如果插入的 AVAL 不是以 'ABC' 开头.(说简单点吧,^_^).
那么取消这次插入,把该条记录的 AID 记录到表 B .如果用 SQL-Server 的话.简单多了.
用 Oracle 怎么实现呢?郁闷了好长时间了.
那么取消这次插入,把该条记录的 AID 记录到表 B .如果用 SQL-Server 的话.简单多了.
用 Oracle 怎么实现呢?郁闷了好长时间了.
解决方案 »
- order by 影响速度的问题
- mysql 存储过程 转换为Sql Server 2005 数据库存储过程写法
- 求一触发器写法,各位高手100分求解啊!!!!
- 开发oracle10登录存储过程,对用户名、密码等判断是否存在(游标)
- 不能插入BLOB字段
- ora-12535:TNS:操作超时 的问题
- 关于数值转换的问题,简单!!!
- 怎么样在Oracle外面写程序自动编译它的存储过程和函数啊?
- 有关linux下oracle的安装和使用问题?????
- SQL Developer如何执行存储过程
- 快郁闷死我的:存储过程有输入参数和输出参数的,要在多个表中查询即:如果在表A中没有就到表B中查找,如果两个表都没有查到返回一个值
- 处理大字段时遇到问题:UTL_RAW.CAST_TO_RAW 提示 ora-06553: pls-306 "wrong number or types of arguments in call to ,请高人指点1,
if substr(aid,1,3)='ABC' then
insert into b......
end if;
2 INSTEAD OF INSERT ON TEST.V_A
3 FOR EACH ROW
4 DECLARE
5 theID VARCHAR2(5):='';
6 BEGIN
7 theID := :NEW.ID;
8 IF SUBSTR(theID,1,3)='ABC' THEN
9 INSERT INTO TEST.B(ID)VALUES(theID);
10 ELSE
11 INSERT INTO TEST.A(ID)VALUES(theID);
12 END IF;
13 END;
14 /触发器已创建SQL> INSERT INTO TEST.V_A VALUES('123');已创建 1 行。SQL> INSERT INTO TEST.V_A VALUES('ABC');已创建 1 行。SQL> COMMIT;提交完成。SQL> SELECT *FROM TEST.A;ID
-----
123SQL> SELECT *FROM TEST.B;ID
-----
ABC
从而我目前能想到的办法就是加一级视图。
7 theID := :NEW.ID;这个:NEW.ID;哪里来的阿?没看到