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是啥关系?一个基本表,一个基于基本表的视图?