当前位置: 代码迷 >> Oracle开发 >> oracle trigger insert触发有关问题
  详细解决方案

oracle trigger insert触发有关问题

热度:233   发布时间:2016-04-24 06:35:22.0
oracle trigger insert触发问题
DROP TRIGGER SAJET.TEST_TYPE_DATA;

CREATE OR REPLACE TRIGGER SAJET.TEST_TYPE_DATA
after INSERTor UPDATE or DELETE 
ON SAJET.TEST_TYPES FOR EACH ROW
declare 
t_id number(25);
TRES varchar2(500);
BEGIN
if inserting then
 -- t_id:=:new.id;
       -- insert into test_nnn(num)values(:new.id);
        sajet.insert_data_syn(1,:new.id,TRES);
    end if;
       
       
        if updating then
                t_id:=:old.id;
              sajet.update_data_syn(1,t_id,TRES);
         end if;
         
         if deleting then
                  t_id:=:old.id;
                  sajet.delete_data_syn(1,t_id,TRES);
        end if;
    
END;
/
这个是trigger 当执行insert  sql语句时procedure如下
CREATE OR REPLACE procedure SAJET.insert_data_syn (dis in number,t_id in number,TRES out varchar2) IS
test_type varchar2(25);
table_name varchar2(25);
column_no number;
begin
select test_type_name ,data_table_name ,default_column_no into test_type,table_name,column_no  from sajet.test_types where test_types.id=t_id;
这的t_id可以拿到插入的那条数据的id
当select sql语句却出现异常。。。这个是什么原因?

------解决思路----------------------
只有before insert 触发器可以使用select语句查询自身表的数据,oracle是这样限定的
你的表TEST_TYPE_DATA和test_types是啥关系?一个基本表,一个基于基本表的视图?
  相关解决方案