表A有两列,(AID,AVAL)做一个触发器.完成下列任务:如果插入的 AVAL 不是以 'ABC' 开头.(说简单点吧,^_^).
那么取消这次插入,把该条记录的 AID 记录到表 B .如果用 SQL-Server 的话.简单多了.
用 Oracle 怎么实现呢?郁闷了好长时间了.
那么取消这次插入,把该条记录的 AID 记录到表 B .如果用 SQL-Server 的话.简单多了.
用 Oracle 怎么实现呢?郁闷了好长时间了.
解决方案 »
- linux 下 oracle 11g 启动监听的问题,急!在线等
- ~~~~~~~~~~~~~~自动补全、数据库设计!
- 多表查询问题(谢谢先)
- 把Oracle转换成SQLServer
- 一普通sql语句,效率咋这么低,迷惑中!请高效率语句(急,在线等!!!)
- 谁做过在RHEL4下自动启动oracle10G?
- 在ORACLE数据库中这样的SQL语句怎么写?
- 请问oracle8i 存放表和字段信息的系统表是哪个,注释信息又都在系统表的什么字段里
- 请问在PL/SQL中如何创建一个二维数组?
- 急,关于快照和触发器
- 快郁闷死我的:存储过程有输入参数和输出参数的,要在多个表中查询即:如果在表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;哪里来的阿?没看到