如果有两张表A,C
A(pid number,uname varchar2)
C(pid number,uname varchar2);
如果我要往C中插入纪录,先在A表中查找,如果在A表中没有重复的uname项,那么插入C表中,如果A表中有这条记录那么,不插入C表!就返回。
请问触发器应该怎么写????

解决方案 »

  1.   

    这个...?????
    难道是在C表上用触发器?
    如果是的话,触发器执行的sql的时候就是插入数据到C的过程,且触发器不能回滚主事务...好像用触发器不能实现吧...强烈关注!
      

  2.   

    创建一个视图,结构与C表一致
    在视图上创建 Instead Of的触发器, 在该触发器内查找A数据,满足条件则插入C表,否则不操作
      

  3.   

    直接在触发器中让oracle不插入行,我想应该是无法实现的,但可以变通实现。
    方案1:在触发器中检查表A,如果存在则抛出异常,由应用应用程序来处理异常,不执行插入。
    方案2:在行触发器中检查表A,如果存在则将记录设置一个标记,再由表的触发器删除有此标记的记录。